<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<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:#0C0F15}
.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{height:180px;background:#f1f4f9;display:grid;place-items:center;position:relative}
.thumb img{width:100%;height:100%;object-fit:cover}
.grade{position:absolute;top:12px;left:12px;background:var(--green);color:#fff;font-size:12px;font-weight:700;padding:4px 10px;border-radius:20px}
.grade.b{background:#2f7de1}
.card .body{padding:18px}
.card h4{font-size:17px;margin-bottom:4px}
.card .spec{font-size:13px;color:var(--muted);min-height:34px}
.card .pr{display:flex;align-items:center;justify-content:space-between;margin-top:12px}
.card .price{color:var(--ink);font-weight:800;font-size:21px}
.card .buy{background:var(--orange);color:#fff;border:none;padding:9px 16px;border-radius:10px;font-weight:700;cursor:pointer;font-size:14px}

/* 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}
.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(3,1fr);gap:18px}
@media(max-width:1150px){.bgrid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.bgrid{grid-template-columns:1fr}}
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>

<header>
  <div class="wrap nav">
    <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/" class="active">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">Open <i>&bull; Closes 6:30 pm</i></span></span>
    </a>
    <button class="burger" id="burger" aria-label="Open menu"><span></span><span></span><span></span></button>
  </div>
</header>

<div class="mmenu" id="mmenu">
  <button class="mclose" id="mclose" aria-label="Close menu">&times;</button>
  <a href="https://subnet1.com/">REPAIR</a>
  <a href="https://subnet1.com/buy-from-us/" class="active">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">Call 020 8866 4644</a>
</div>

<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 grid (see script at end). -->
    <div class="feat" id="featGrid"></div>
    <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/" aria-label="Facebook">f</a><a href="https://www.instagram.com/" 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="#">Warranty &amp; Returns</a></li>
          <li><a href="#">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, 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); });
})();
</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 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 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 specParts=[];
    (p.attributes||[]).forEach(function(a){var n=(a.name||'').toLowerCase().trim();
      if(n==='brand'||n==='condition') return; (a.terms||[]).forEach(function(t){specParts.push(t.name);});});
    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:(attrs['condition']||[])[0]||'',attrs:attrs,
      catTokens:catNames.map(norm),spec:specParts.join(' · '),
      search:norm(name+' '+specParts.join(' ')+' '+catNames.join(' '))};
  }

  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 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('');
    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();
      });
    });
  }

  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=(m.attrs[f]||[]).map(norm);
      if(!sel.some(function(t){return terms.indexOf(t)>-1;})) 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(){if(!featGrid) return; var list=PRODUCTS.slice(0,4);
    featGrid.innerHTML=list.map(card).join(''); featGrid.style.display=list.length?'':'none';
    if(featEmpty) featEmpty.style.display=list.length?'none':'';}

  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 load(){fetch(API,{headers:{'Accept':'application/json'}})
    .then(function(r){return r.json();})
    .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>
</body>
</html>
