{"id":475,"date":"2026-08-15T19:08:50","date_gmt":"2026-08-15T19:08:50","guid":{"rendered":"https:\/\/amcommarine.com\/index.php\/our-products\/"},"modified":"2026-08-21T17:15:09","modified_gmt":"2026-08-21T17:15:09","slug":"our-products","status":"publish","type":"page","link":"https:\/\/amcommarine.com\/index.php\/our-products\/","title":{"rendered":"Our Product&#8217;s"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"475\" class=\"elementor elementor-475\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-189e527 e-con-full e-flex e-con e-parent\" data-id=\"189e527\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t<div class=\"elementor-element elementor-element-4200fde e-flex e-con-boxed e-con e-child\" data-id=\"4200fde\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6616a74 elementor-widget elementor-widget-spacer\" data-id=\"6616a74\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-eedd6c9 elementor-widget elementor-widget-heading\" data-id=\"eedd6c9\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Marine Product's &amp; <br>Equipment\n<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1d92c72 elementor-widget elementor-widget-heading\" data-id=\"1d92c72\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Trusted Marine Equipment,\n<br>Leading Brands &amp; Reliable <br>Solutions\nforEvery Vessel.<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-63a2283 elementor-widget elementor-widget-spacer\" data-id=\"63a2283\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-8f22240 e-con e-atomic-element e-flexbox-base e-d979f5a \" data-id=\"8f22240\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"8f22240\" data-e-type=\"e-flexbox\" data-id=\"8f22240\">\n    \t\t<div class=\"elementor-element elementor-element-76ab414 elementor-widget elementor-widget-html\" data-id=\"76ab414\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"en\">\r\n<head>\r\n<meta charset=\"UTF-8\">\r\n<title>AMCOM Marine \u2014 GPS Simulators<\/title>\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n<link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.5.1\/css\/all.min.css\">\r\n<style>\r\n\/* =========================================================\r\n   AMCOM MARINE \u2014 CUSTOM CSS\r\n   ========================================================= *\/\r\n:root{\r\n  --navy:#12233f;\r\n  --navy-2:#1c3a63;\r\n  --blue:#21619b;\r\n  --blue-light:#eef4fa;\r\n  --border:#e6e9ee;\r\n  --text:#1c2530;\r\n  --muted:#6b7686;\r\n  --red:#e6453c;\r\n  --radius:8px;\r\n}\r\n*{box-sizing:border-box;}\r\nbody{margin:0;padding:0;}\r\n.amcom-app{\r\n  font-family:\"Segoe UI\",Arial,Helvetica,sans-serif;\r\n  color:var(--text);\r\n  background:#f7f8fa;\r\n}\r\n.amcom-app a{text-decoration:none;color:inherit;}\r\n.amcom-app ul{list-style:none;margin:0;padding:0;}\r\n.amcom-app button{font-family:inherit;cursor:pointer;}\r\n\r\n\/* ---------- Header ---------- *\/\r\n.amcom-header{\r\n  display:flex;align-items:center;justify-content:space-between;\r\n  padding:14px 32px;background:#fff;border-bottom:1px solid var(--border);\r\n  flex-wrap:wrap;gap:14px;\r\n}\r\n.amcom-logo{display:flex;align-items:center;gap:10px;font-weight:800;color:var(--navy);font-size:20px;line-height:1.1;}\r\n.amcom-logo i{font-size:26px;color:var(--navy);}\r\n.amcom-logo span{display:block;font-size:12px;font-weight:700;letter-spacing:2px;color:var(--muted);}\r\n.amcom-search{\r\n  flex:1;max-width:520px;min-width:200px;display:flex;border:1px solid var(--border);border-radius:6px;overflow:hidden;\r\n}\r\n.amcom-search input{border:0;padding:11px 14px;flex:1;outline:none;font-size:14px;}\r\n.amcom-search button{border:0;background:var(--navy);color:#fff;padding:0 18px;}\r\n.amcom-header-actions{display:flex;align-items:center;gap:22px;}\r\n.amcom-icon-link{display:flex;align-items:center;gap:6px;font-size:14px;font-weight:600;color:var(--navy);position:relative;background:none;border:0;}\r\n.amcom-badge{background:var(--navy);color:#fff;border-radius:999px;font-size:11px;padding:1px 7px;font-weight:700;}\r\n.amcom-cta{background:var(--navy);color:#fff;padding:10px 18px;border-radius:6px;font-weight:700;font-size:14px;display:flex;align-items:center;gap:8px;border:0;}\r\n\r\n\/* ---------- Nav ---------- *\/\r\n.amcom-nav{background:var(--navy);color:#fff;display:flex;align-items:center;padding:0 32px;flex-wrap:wrap;}\r\n.amcom-browse{display:flex;align-items:center;gap:10px;padding:14px 18px;background:var(--navy-2);font-weight:700;font-size:14px;cursor:pointer;}\r\n.amcom-nav-links{display:flex;gap:26px;padding:14px 24px;font-size:14px;font-weight:600;}\r\n.amcom-nav-links li{opacity:.92;cursor:pointer;}\r\n.amcom-nav-links li:hover{opacity:1;text-decoration:underline;}\r\n\r\n\/* ---------- Hero \/ Breadcrumb ---------- *\/\r\n.amcom-hero{\r\n  position:relative;background:linear-gradient(90deg,#fff 0%,#fff 38%, rgba(255,255,255,0) 62%),\r\n  url('data:image\/svg+xml;utf8,<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"800\" height=\"260\"><rect width=\"800\" height=\"260\" fill=\"%23274a72\"\/><rect y=\"150\" width=\"800\" height=\"110\" fill=\"%231b3556\"\/><\/svg>') right\/cover no-repeat;\r\n  padding:26px 32px 34px;\r\n}\r\n.amcom-crumbs{font-size:13px;color:var(--muted);margin-bottom:10px;}\r\n.amcom-crumbs span{color:var(--blue);}\r\n.amcom-hero h1{margin:0 0 10px;font-size:32px;color:var(--navy);}\r\n.amcom-hero p{max-width:560px;margin:0;color:#3d4757;font-size:14.5px;line-height:1.5;}\r\n\r\n\/* ---------- Layout ---------- *\/\r\n.amcom-body{display:flex;gap:24px;padding:24px 32px 60px;align-items:flex-start;}\r\n.amcom-sidebar{width:270px;flex-shrink:0;display:flex;flex-direction:column;gap:20px;}\r\n.amcom-panel{background:#fff;border:1px solid var(--border);border-radius:var(--radius);padding:18px;}\r\n.amcom-panel h3{margin:0 0 12px;font-size:15px;color:var(--navy);}\r\n.amcom-mini-search{display:flex;border:1px solid var(--border);border-radius:6px;overflow:hidden;}\r\n.amcom-mini-search input{border:0;flex:1;padding:9px 10px;font-size:13px;outline:none;}\r\n.amcom-mini-search button{border:0;background:#fff;color:var(--muted);padding:0 12px;}\r\n.amcom-cat-list li{display:flex;align-items:center;justify-content:space-between;padding:9px 4px;font-size:14px;cursor:pointer;border-radius:6px;color:#33404f;}\r\n.amcom-cat-list li i.cat-ic{width:20px;color:var(--blue);margin-right:8px;}\r\n.amcom-cat-list li:hover,.amcom-cat-list li.active{background:var(--blue-light);color:var(--blue);}\r\n.amcom-cat-list li .chev{margin-left:auto;color:#b7bfc9;}\r\n.amcom-brand-row{display:flex;align-items:center;justify-content:space-between;padding:7px 2px;font-size:13.5px;}\r\n.amcom-brand-row label{display:flex;align-items:center;gap:8px;cursor:pointer;}\r\n.amcom-brand-row span.count{color:var(--muted);}\r\n.amcom-viewall{font-size:13px;color:var(--blue);font-weight:700;cursor:pointer;}\r\n.amcom-showmore{margin-top:6px;font-size:13px;color:var(--blue);font-weight:700;cursor:pointer;display:flex;align-items:center;gap:4px;}\r\n\r\n\/* ---------- Toolbar ---------- *\/\r\n.amcom-content{flex:1;min-width:0;}\r\n.amcom-toolbar{\r\n  background:#fff;border:1px solid var(--border);border-radius:var(--radius);\r\n  padding:14px 20px;display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;flex-wrap:wrap;gap:10px;\r\n}\r\n.amcom-viewas{display:flex;align-items:center;gap:10px;font-size:13.5px;color:#3d4757;}\r\n.amcom-viewbtns{display:flex;border:1px solid var(--border);border-radius:6px;overflow:hidden;}\r\n.amcom-viewbtns button{border:0;background:#fff;padding:8px 12px;color:var(--muted);}\r\n.amcom-viewbtns button.active{background:var(--navy);color:#fff;}\r\n.amcom-results{font-size:13.5px;color:#3d4757;}\r\n.amcom-sort{display:flex;align-items:center;gap:8px;font-size:13.5px;}\r\n.amcom-sort select{border:1px solid var(--border);border-radius:6px;padding:8px 10px;font-size:13.5px;background:#fff;}\r\n\r\n\/* ---------- Product grid ---------- *\/\r\n.amcom-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;}\r\n.amcom-grid.list-mode{grid-template-columns:1fr;}\r\n.amcom-card{\r\n  background:#fff;border:1px solid var(--border);border-radius:var(--radius);\r\n  overflow:hidden;display:flex;flex-direction:column;transition:box-shadow .15s, transform .15s;\r\n}\r\n.amcom-card:hover{box-shadow:0 10px 24px rgba(18,35,63,.08);transform:translateY(-2px);}\r\n.list-mode .amcom-card{flex-direction:row;}\r\n.amcom-thumb{\r\n  position:relative;background:var(--blue-light);display:flex;align-items:center;justify-content:center;\r\n  padding:22px;height:150px;\r\n}\r\n.list-mode .amcom-thumb{width:220px;flex-shrink:0;height:auto;}\r\n.amcom-thumb svg{max-width:100%;max-height:100%;}\r\n.amcom-heart{\r\n  position:absolute;top:10px;right:10px;background:#fff;border:1px solid var(--border);\r\n  width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;\r\n  color:#8a93a1;font-size:14px;\r\n}\r\n.amcom-heart.active{color:var(--red);border-color:var(--red);}\r\n.amcom-card-body{padding:16px 18px 18px;display:flex;flex-direction:column;gap:6px;flex:1;}\r\n.amcom-brand-tag{font-size:11px;font-weight:800;letter-spacing:.5px;color:var(--blue);text-transform:uppercase;}\r\n.amcom-card-body h4{margin:0;font-size:15.5px;color:var(--navy);line-height:1.3;}\r\n.amcom-card-body p.desc{margin:2px 0 6px;font-size:13px;color:var(--muted);line-height:1.5;}\r\n.amcom-card-actions{display:flex;gap:16px;margin-top:auto;font-size:13px;color:var(--blue);font-weight:600;}\r\n.amcom-card-actions button{background:none;border:0;color:var(--blue);display:flex;align-items:center;gap:6px;padding:0;font-size:13px;font-weight:600;}\r\n.amcom-card-actions button.active{color:var(--navy);font-weight:800;}\r\n.amcom-empty{padding:60px 20px;text-align:center;color:var(--muted);background:#fff;border:1px solid var(--border);border-radius:var(--radius);}\r\n\r\n\/* ---------- Footer strip ---------- *\/\r\n.amcom-strip{\r\n  display:grid;grid-template-columns:repeat(4,1fr);gap:20px;padding:26px 32px;background:#fff;border-top:1px solid var(--border);\r\n}\r\n.amcom-strip div{display:flex;gap:12px;align-items:flex-start;}\r\n.amcom-strip i{color:var(--blue);font-size:20px;margin-top:2px;}\r\n.amcom-strip b{display:block;font-size:14px;color:var(--navy);}\r\n.amcom-strip small{color:var(--muted);font-size:12.5px;}\r\n\r\n\/* ---------- Contact rail ---------- *\/\r\n.amcom-rail{\r\n  position:fixed;right:0;top:45%;background:var(--navy);color:#fff;padding:16px 10px;\r\n  writing-mode:vertical-rl;border-radius:8px 0 0 8px;font-weight:700;font-size:13px;letter-spacing:1px;\r\n  display:flex;align-items:center;gap:8px;cursor:pointer;\r\n}\r\n\r\n\/* ---------- Modal ---------- *\/\r\n.product-modal{position:fixed;inset:0;z-index:999;display:none;}\r\n.product-modal.active{display:block;}\r\n.modal-overlay{position:absolute;inset:0;background:rgba(12,20,33,.6);}\r\n.modal-card{\r\n  position:relative;max-width:920px;margin:4vh auto;background:#fff;border-radius:12px;overflow:hidden;\r\n  display:grid;grid-template-columns:1fr 1fr;max-height:92vh;overflow-y:auto;\r\n  animation:modalIn .25s ease;\r\n}\r\n@keyframes modalIn{from{opacity:0;transform:translateY(16px);}to{opacity:1;transform:translateY(0);}}\r\n.modal-close{\r\n  position:absolute;top:16px;right:16px;background:#fff;border:1px solid var(--border);width:34px;height:34px;\r\n  border-radius:50%;display:flex;align-items:center;justify-content:center;z-index:2;transition:transform .2s;\r\n}\r\n.modal-close:hover{transform:rotate(90deg);}\r\n.modal-product-image{min-height:340px;background:#f5f8fb;display:flex;align-items:center;justify-content:center;padding:40px;}\r\n.modal-product-image svg{width:100%;height:100%;max-height:300px;animation:productImageShow .35s ease;}\r\n@keyframes productImageShow{from{opacity:0;transform:scale(.9);}to{opacity:1;transform:scale(1);}}\r\n.modal-product-details{padding:40px 36px;display:flex;flex-direction:column;gap:10px;}\r\n.modal-brand{font-size:12px;color:var(--blue);font-weight:800;text-transform:uppercase;}\r\n.modal-product-details h2{margin:0;font-size:22px;color:var(--navy);}\r\n.modal-meta{display:flex;gap:18px;font-size:12.5px;color:var(--muted);flex-wrap:wrap;margin-top:2px;}\r\n.modal-meta b{color:#33404f;}\r\n.modal-desc{font-size:13.5px;color:#3d4757;line-height:1.6;margin:6px 0;}\r\n.modal-specs-title{font-size:13px;font-weight:800;color:var(--navy);margin-top:8px;}\r\n.modal-specs{margin:6px 0 4px;padding:0;list-style:none;display:flex;flex-direction:column;gap:6px;}\r\n.modal-specs li{font-size:13px;color:#3d4757;display:flex;gap:8px;align-items:flex-start;}\r\n.modal-specs li:before{content:\"\\2713\";color:var(--blue);font-weight:800;}\r\n.modal-actions{display:flex;flex-direction:column;gap:10px;margin-top:14px;}\r\n.modal-btn{padding:12px 16px;border-radius:6px;text-align:center;font-weight:700;font-size:14px;border:1px solid var(--navy);}\r\n.modal-btn.primary{background:var(--navy);color:#fff;}\r\n.modal-btn.secondary{background:#fff;color:var(--navy);}\r\n.modal-btn.secondary.active{background:var(--red);border-color:var(--red);color:#fff;}\r\n.modal-related{margin-top:18px;}\r\n.modal-related h5{font-size:12.5px;color:var(--navy);text-transform:uppercase;letter-spacing:.4px;margin:0 0 8px;}\r\n.modal-related-list{display:flex;gap:10px;overflow-x:auto;}\r\n.modal-related-item{flex:0 0 110px;border:1px solid var(--border);border-radius:8px;padding:8px;cursor:pointer;text-align:center;}\r\n.modal-related-item svg{width:100%;height:50px;}\r\n.modal-related-item span{display:block;font-size:11px;color:#3d4757;margin-top:4px;}\r\nbody.modal-open{overflow:hidden;}\r\n\r\n@media(max-width:960px){\r\n  .amcom-body{flex-direction:column;}\r\n  .amcom-sidebar{width:100%;}\r\n  .amcom-grid{grid-template-columns:repeat(2,1fr);}\r\n  .modal-card{grid-template-columns:1fr;margin:0;max-height:100vh;border-radius:0;}\r\n}\r\n@media(max-width:600px){\r\n  .amcom-grid{grid-template-columns:1fr;}\r\n  .amcom-header{padding:12px 16px;}\r\n  .amcom-body{padding:16px;}\r\n}\r\n<\/style>\r\n<\/head>\r\n<body>\r\n<div class=\"amcom-app\">\r\n\r\n  <!-- HEADER -->\r\n  <header class=\"amcom-header\">\r\n    <div class=\"amcom-logo\"><i class=\"fa-solid fa-anchor\"><\/i><span><\/span><\/div>\r\n    <div class=\"amcom-search\">\r\n      <input type=\"text\" id=\"topSearch\" placeholder=\"Search products, brands, equipment...\">\r\n      <button type=\"button\" id=\"topSearchBtn\"><i class=\"fa-solid fa-magnifying-glass\"><\/i><\/button>\r\n    <\/div>\r\n    <div class=\"amcom-header-actions\">\r\n      <button type=\"button\" class=\"amcom-icon-link\" id=\"compareLink\"><i class=\"fa-regular fa-copy\"><\/i> Compare <span class=\"amcom-badge\" id=\"compareCount\">0<\/span><\/button>\r\n      <button type=\"button\" class=\"amcom-icon-link\" id=\"wishlistLink\"><i class=\"fa-regular fa-heart\"><\/i> Wishlist <span class=\"amcom-badge\" id=\"wishlistCount\">0<\/span><\/button>\r\n      <a class=\"amcom-cta\" href=\"mailto:info@amcommarine.com?subject=Request%20Information\"><i class=\"fa-regular fa-envelope\"><\/i> Request Information<\/a>\r\n    <\/div>\r\n  <\/header>\r\n\r\n  <!-- NAV -->\r\n  \r\n\r\n  <!-- HERO -->\r\n  <section class=\"amcom-hero\">\r\n    <div class=\"amcom-crumbs\">Home &gt; Monitoring &amp; Measurement &gt; <span>GPS Simulators<\/span><\/div>\r\n    <h1>GPS Simulators<\/h1>\r\n    <p>High performance GPS \/ GNSS simulators for testing and validation of navigation systems, receivers, and related marine equipment.<\/p>\r\n  <\/section>\r\n\r\n  <!-- BODY -->\r\n  <div class=\"amcom-body\">\r\n\r\n    <!-- SIDEBAR -->\r\n    <aside class=\"amcom-sidebar\">\r\n      <div class=\"amcom-panel\">\r\n        <h3>Product Research<\/h3>\r\n        <div class=\"amcom-mini-search\">\r\n          <input type=\"text\" id=\"sideSearch\" placeholder=\"Search products...\">\r\n          <button type=\"button\" id=\"sideSearchBtn\"><i class=\"fa-solid fa-magnifying-glass\"><\/i><\/button>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"amcom-panel\">\r\n        <h3>Product Categories<\/h3>\r\n        <ul class=\"amcom-cat-list\" id=\"categoryList\"><\/ul>\r\n      <\/div>\r\n\r\n      <div class=\"amcom-panel\">\r\n        <div style=\"display:flex;justify-content:space-between;align-items:center;\">\r\n          <h3 style=\"margin:0;\">Brands<\/h3>\r\n          <span class=\"amcom-viewall\" id=\"clearBrands\">Clear<\/span>\r\n        <\/div>\r\n        <div id=\"brandList\"><\/div>\r\n        <div class=\"amcom-showmore\" id=\"showMoreBrands\">Show more <i class=\"fa-solid fa-chevron-down\"><\/i><\/div>\r\n      <\/div>\r\n    <\/aside>\r\n\r\n    <!-- CONTENT -->\r\n    <main class=\"amcom-content\">\r\n      <div class=\"amcom-toolbar\">\r\n        <div class=\"amcom-viewas\">\r\n          View as :\r\n          <div class=\"amcom-viewbtns\">\r\n            <button type=\"button\" id=\"gridBtn\" class=\"active\"><i class=\"fa-solid fa-table-cells\"><\/i><\/button>\r\n            <button type=\"button\" id=\"listBtn\"><i class=\"fa-solid fa-list\"><\/i><\/button>\r\n          <\/div>\r\n        <\/div>\r\n        <div class=\"amcom-results\" id=\"resultsLabel\">Showing 1\u20138 of 8 Results<\/div>\r\n        <div class=\"amcom-sort\">\r\n          Sort by :\r\n          <select id=\"sortSelect\">\r\n            <option value=\"popular\">Most Popular<\/option>\r\n            <option value=\"name-asc\">Name A-Z<\/option>\r\n            <option value=\"name-desc\">Name Z-A<\/option>\r\n            <option value=\"brand-asc\">Brand A-Z<\/option>\r\n            <option value=\"brand-desc\">Brand Z-A<\/option>\r\n          <\/select>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"amcom-grid\" id=\"productGrid\"><\/div>\r\n    <\/main>\r\n  <\/div>\r\n\r\n  <!-- FOOTER STRIP -->\r\n  <div class=\"amcom-strip\">\r\n    <div><i class=\"fa-solid fa-globe\"><\/i><div><b>Global Shipping<\/b><small>Worldwide delivery for marine equipment<\/small><\/div><\/div>\r\n    <div><i class=\"fa-solid fa-shield-halved\"><\/i><div><b>Trusted Brands<\/b><small>Genuine products from leading manufacturers<\/small><\/div><\/div>\r\n    <div><i class=\"fa-solid fa-headset\"><\/i><div><b>Expert Support<\/b><small>Technical assistance from marine specialists<\/small><\/div><\/div>\r\n    <div><i class=\"fa-solid fa-lock\"><\/i><div><b>Secure Request<\/b><small>Safe and secure product information request<\/small><\/div><\/div>\r\n  <\/div>\r\n\r\n  <div class=\"amcom-rail\"><i class=\"fa-solid fa-envelope\"><\/i> Contact Us<\/div>\r\n\r\n  <!-- QUICK VIEW MODAL -->\r\n  <div id=\"productModal\" class=\"product-modal\">\r\n    <div id=\"modalOverlay\" class=\"modal-overlay\"><\/div>\r\n    <div class=\"modal-card\">\r\n      <button type=\"button\" id=\"modalClose\" class=\"modal-close\"><i class=\"fa-solid fa-xmark\"><\/i><\/button>\r\n      <div class=\"modal-product-image\" id=\"modalImage\"><\/div>\r\n      <div class=\"modal-product-details\">\r\n        <span class=\"modal-brand\" id=\"modalBrand\"><\/span>\r\n        <h2 id=\"modalName\"><\/h2>\r\n        <div class=\"modal-meta\">\r\n          <span>Model: <b id=\"modalModel\"><\/b><\/span>\r\n          <span>Type: <b id=\"modalType\"><\/b><\/span>\r\n          <span>Category: <b id=\"modalCategory\"><\/b><\/span>\r\n        <\/div>\r\n        <p class=\"modal-desc\" id=\"modalDesc\"><\/p>\r\n        <div class=\"modal-specs-title\">Specifications<\/div>\r\n        <ul class=\"modal-specs\" id=\"modalSpecs\"><\/ul>\r\n        <div class=\"modal-actions\">\r\n          <a class=\"modal-btn primary\" id=\"modalContact\" href=\"#\">More Information \/ Contact to Buy<\/a>\r\n          <button type=\"button\" class=\"modal-btn secondary\" id=\"modalWishlist\">Add to Wishlist<\/button>\r\n        <\/div>\r\n        <div class=\"modal-related\">\r\n          <h5>Related Products<\/h5>\r\n          <div class=\"modal-related-list\" id=\"modalRelated\"><\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n<\/div>\r\n\r\n<script>\r\n(function(){\r\n\"use strict\";\r\n\r\n\/* =========================================================\r\n   PRODUCT DATA\r\n   ========================================================= *\/\r\nfunction icon(color, initials){\r\n  return '<svg viewBox=\"0 0 200 140\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">'+\r\n    '<rect x=\"10\" y=\"20\" width=\"180\" height=\"100\" rx=\"10\" fill=\"'+color+'\" opacity=\"0.12\"\/>'+\r\n    '<rect x=\"26\" y=\"36\" width=\"148\" height=\"68\" rx=\"6\" fill=\"'+color+'\" opacity=\"0.85\"\/>'+\r\n    '<text x=\"100\" y=\"76\" font-family=\"Arial\" font-size=\"22\" font-weight=\"700\" fill=\"#fff\" text-anchor=\"middle\">'+initials+'<\/text>'+\r\n    '<\/svg>';\r\n}\r\n\r\nconst PRODUCTS = [\r\n  {id:\"jrc-jlr7800\",brand:\"JRC\",name:\"JRC JLR-7800 GNSS Simulator\",category:\"gps\",categoryLabel:\"GPS \/ GNSS\",\r\n   desc:\"High performance multi-constellation GNSS simulator for advanced navigation system testing.\",\r\n   model:\"JLR-7800\",type:\"GNSS Simulator\",color:\"#c22026\",\r\n   specs:[\"Multi-constellation GPS\/GLONASS\/Galileo\/BeiDou\",\"Real-time scenario generation\",\"RF output up to 4 channels\",\"Compact rack-mount chassis\"]},\r\n  {id:\"furuno-ggt2500\",brand:\"FURUNO\",name:\"FURUNO GGT-2500 GPS Simulator\",category:\"gps\",categoryLabel:\"GPS \/ GNSS\",\r\n   desc:\"Compact and accurate GPS simulator for testing marine navigation equipment and systems.\",\r\n   model:\"GGT-2500\",type:\"GPS Simulator\",color:\"#0b4f9e\",\r\n   specs:[\"Single\/dual frequency GPS simulation\",\"Touchscreen scenario control\",\"Portable field-test unit\",\"NMEA 0183 output\"]},\r\n  {id:\"sailor-6000\",brand:\"SAILOR\",name:\"SAILOR 6000 GNSS Simulator\",category:\"gps\",categoryLabel:\"GPS \/ GNSS\",\r\n   desc:\"Advanced GNSS simulator supporting multiple constellations and signal conditions for marine applications.\",\r\n   model:\"SAILOR 6000\",type:\"GNSS Simulator\",color:\"#5b5f66\",\r\n   specs:[\"Multi-GNSS constellation support\",\"Adverse signal condition emulation\",\"Rugged marine-grade housing\",\"Remote scenario upload\"]},\r\n  {id:\"spirent-gss7000\",brand:\"SPIRENT\",name:\"Spirent GSS7000 Multi-GNSS Simulator\",category:\"gps\",categoryLabel:\"GPS \/ GNSS\",\r\n   desc:\"High fidelity GNSS simulation for development, test and validation of marine navigation systems.\",\r\n   model:\"GSS7000\",type:\"Multi-GNSS Simulator\",color:\"#1c3a63\",\r\n   specs:[\"High fidelity multi-GNSS channels\",\"Modular hardware architecture\",\"Scenario replay & interference testing\",\"Lab and field deployment\"]},\r\n  {id:\"orolia-gsg8\",brand:\"OROLIA\",name:\"Orolia GSG-8 GNSS Simulator\",category:\"gps\",categoryLabel:\"GPS \/ GNSS\",\r\n   desc:\"Flexible and scalable GNSS simulator for testing safety critical navigation and timing systems.\",\r\n   model:\"GSG-8\",type:\"GNSS Simulator\",color:\"#e8622c\",\r\n   specs:[\"Scalable channel configuration\",\"Safety-critical timing test suite\",\"Software-defined signal generation\",\"API-driven scenario scripting\"]},\r\n  {id:\"viavi-gsg6\",brand:\"VIAVI\",name:\"VIAVI GSG-6 Series GNSS Simulator\",category:\"gps\",categoryLabel:\"GPS \/ GNSS\",\r\n   desc:\"Multi-constellation GNSS simulator with high accuracy and real-time scenario generation.\",\r\n   model:\"GSG-6 Series\",type:\"GNSS Simulator\",color:\"#6a1b9a\",\r\n   specs:[\"High-accuracy multi-constellation output\",\"Real-time trajectory scripting\",\"Bench-top and rack options\",\"USB\/Ethernet scenario control\"]},\r\n  {id:\"rs-smbv100b\",brand:\"ROHDE & SCHWARZ\",name:\"R&S SMBV100B GNSS Simulator\",category:\"gps\",categoryLabel:\"GPS \/ GNSS\",\r\n   desc:\"Wideband GNSS simulator for professional testing and validation of modern navigation receivers.\",\r\n   model:\"SMBV100B\",type:\"GNSS Simulator\",color:\"#2ba7c9\",\r\n   specs:[\"Wideband vector signal generation\",\"Precision receiver validation\",\"Flexible constellation licensing\",\"Compact bench-top design\"]},\r\n  {id:\"labsphere-gsg5\",brand:\"LABSPHERE\",name:\"Labsphere GSG-5 GNSS Simulator\",category:\"gps\",categoryLabel:\"GPS \/ GNSS\",\r\n   desc:\"Cost effective GNSS simulation solution for research and marine testing environments.\",\r\n   model:\"GSG-5\",type:\"GNSS Simulator\",color:\"#2f7d63\",\r\n   specs:[\"Budget-friendly GNSS test platform\",\"Research and academic use\",\"Basic multi-constellation support\",\"Simple scenario editor\"]},\r\n  {id:\"kongsberg-radx\",brand:\"KONGSBERG\",name:\"Kongsberg RADX-1 Radar System\",category:\"radar\",categoryLabel:\"Radar Systems\",\r\n   desc:\"High resolution marine radar system for navigation and collision avoidance testing.\",\r\n   model:\"RADX-1\",type:\"Radar System\",color:\"#12233f\",\r\n   specs:[\"High resolution target detection\",\"Solid-state transceiver\",\"ARPA tracking support\",\"Bridge-integrated display\"]},\r\n  {id:\"deif-nx-radar\",brand:\"DEIF\",name:\"DEIF NX-Radar Test Unit\",category:\"radar\",categoryLabel:\"Radar Systems\",\r\n   desc:\"Radar signal test and simulation unit for shipboard radar system validation.\",\r\n   model:\"NX-Radar\",type:\"Radar Test Unit\",color:\"#8a5a00\",\r\n   specs:[\"Radar echo simulation\",\"Sea and rain clutter emulation\",\"Multi-target scenario library\",\"Portable test kit\"]},\r\n  {id:\"jrc-ecdis900\",brand:\"JRC\",name:\"JRC ECDIS-900 Chart System\",category:\"ecdis\",categoryLabel:\"ECDIS\",\r\n   desc:\"Electronic chart display and information system for safe and efficient marine navigation.\",\r\n   model:\"ECDIS-900\",type:\"ECDIS\",color:\"#c22026\",\r\n   specs:[\"S-63\/S-57 chart compatibility\",\"Route planning and monitoring\",\"Dual redundant configuration\",\"Type-approved display unit\"]},\r\n  {id:\"furuno-navnet\",brand:\"FURUNO\",name:\"FURUNO NavNet ECDIS\",category:\"ecdis\",categoryLabel:\"ECDIS\",\r\n   desc:\"Integrated ECDIS platform combining chart plotting with radar and sensor overlays.\",\r\n   model:\"NavNet TZ\",type:\"ECDIS\",color:\"#0b4f9e\",\r\n   specs:[\"Chart & radar overlay fusion\",\"Multi-function display network\",\"AIS and sensor integration\",\"Touch and trackball control\"]},\r\n  {id:\"sailor-nd400\",brand:\"SAILOR\",name:\"SAILOR ND-400 Navigation Display\",category:\"nav-displays\",categoryLabel:\"Navigation Displays\",\r\n   desc:\"High brightness navigation display built for bridge environments and long duty cycles.\",\r\n   model:\"ND-400\",type:\"Navigation Display\",color:\"#5b5f66\",\r\n   specs:[\"Sunlight-readable high brightness panel\",\"IP-rated bridge housing\",\"Multi-input signal switching\",\"Low glare optical bonding\"]},\r\n  {id:\"spirent-nd7\",brand:\"SPIRENT\",name:\"Spirent ND-7 Bridge Display\",category:\"nav-displays\",categoryLabel:\"Navigation Displays\",\r\n   desc:\"Rugged multi-function bridge display for integrated navigation system data.\",\r\n   model:\"ND-7\",type:\"Navigation Display\",color:\"#1c3a63\",\r\n   specs:[\"Multi-function data presentation\",\"Vibration and shock rated\",\"Configurable widget layout\",\"Redundant power input\"]},\r\n];\r\n\r\nconst BRANDS = [\"JRC\",\"FURUNO\",\"SAILOR\",\"SPIRENT\",\"OROLIA\",\"VIAVI\",\"ROHDE & SCHWARZ\",\"LABSPHERE\",\"KONGSBERG\",\"DEIF\"];\r\nconst CATEGORIES = [\r\n  {key:\"gps\",label:\"GPS \/ GNSS\",icon:\"fa-satellite-dish\"},\r\n  {key:\"radar\",label:\"Radar Systems\",icon:\"fa-satellite\"},\r\n  {key:\"ecdis\",label:\"ECDIS\",icon:\"fa-map\"},\r\n  {key:\"nav-displays\",label:\"Navigation Displays\",icon:\"fa-display\"},\r\n  {key:\"scanners\",label:\"Scanners\",icon:\"fa-radar\"},\r\n  {key:\"ais\",label:\"AIS Systems\",icon:\"fa-tower-broadcast\"},\r\n  {key:\"comms\",label:\"Communication\",icon:\"fa-tower-cell\"},\r\n  {key:\"gyro\",label:\"Gyro Compass\",icon:\"fa-compass\"},\r\n  {key:\"speedlog\",label:\"Speed Log \/ Indicators\",icon:\"fa-gauge\"},\r\n  {key:\"echo\",label:\"Echo Sounders\",icon:\"fa-water\"},\r\n  {key:\"autopilot\",label:\"Autopilot Systems\",icon:\"fa-ship\"},\r\n  {key:\"gmdss\",label:\"GMDSS Equipment\",icon:\"fa-triangle-exclamation\"},\r\n];\r\n\r\n\/* =========================================================\r\n   STATE\r\n   ========================================================= *\/\r\nlet state = {\r\n  view:\"grid\",\r\n  sort:\"popular\",\r\n  category:null,\r\n  brands:new Set(),\r\n  query:\"\",\r\n  wishlist:new Set(JSON.parse(localStorage.getItem(\"amcom_wishlist\")||\"[]\")),\r\n  compare:new Set(JSON.parse(localStorage.getItem(\"amcom_compare\")||\"[]\")),\r\n};\r\n\r\nfunction persist(){\r\n  localStorage.setItem(\"amcom_wishlist\", JSON.stringify([...state.wishlist]));\r\n  localStorage.setItem(\"amcom_compare\", JSON.stringify([...state.compare]));\r\n}\r\n\r\n\/* =========================================================\r\n   RENDER: SIDEBAR\r\n   ========================================================= *\/\r\nfunction renderCategories(){\r\n  const el = document.getElementById(\"categoryList\");\r\n  el.innerHTML = \"\";\r\n  const allLi = document.createElement(\"li\");\r\n  allLi.innerHTML = '<span><i class=\"fa-solid fa-layer-group cat-ic\"><\/i>All Products<\/span>';\r\n  if(!state.category) allLi.classList.add(\"active\");\r\n  allLi.addEventListener(\"click\", ()=>{ state.category=null; render(); });\r\n  el.appendChild(allLi);\r\n\r\n  CATEGORIES.forEach(cat=>{\r\n    const li = document.createElement(\"li\");\r\n    li.innerHTML = '<span><i class=\"fa-solid '+cat.icon+' cat-ic\"><\/i>'+cat.label+'<\/span><i class=\"fa-solid fa-chevron-right chev\"><\/i>';\r\n    if(state.category===cat.key) li.classList.add(\"active\");\r\n    li.addEventListener(\"click\", ()=>{ state.category=cat.key; render(); });\r\n    el.appendChild(li);\r\n  });\r\n}\r\n\r\nfunction renderBrands(showAll){\r\n  const el = document.getElementById(\"brandList\");\r\n  el.innerHTML = \"\";\r\n  const list = showAll ? BRANDS : BRANDS.slice(0,5);\r\n  list.forEach(brand=>{\r\n    const count = PRODUCTS.filter(p=>p.brand===brand).length;\r\n    const row = document.createElement(\"div\");\r\n    row.className = \"amcom-brand-row\";\r\n    const checked = state.brands.has(brand) ? \"checked\" : \"\";\r\n    row.innerHTML = '<label><input type=\"checkbox\" data-brand=\"'+brand+'\" '+checked+'> '+brand+'<\/label><span class=\"count\">'+count+'<\/span>';\r\n    row.querySelector(\"input\").addEventListener(\"change\", (e)=>{\r\n      if(e.target.checked) state.brands.add(brand); else state.brands.delete(brand);\r\n      render();\r\n    });\r\n    el.appendChild(row);\r\n  });\r\n}\r\n\r\nlet brandsExpanded = false;\r\ndocument.getElementById(\"showMoreBrands\").addEventListener(\"click\", function(){\r\n  brandsExpanded = !brandsExpanded;\r\n  this.innerHTML = brandsExpanded ? 'Show less <i class=\"fa-solid fa-chevron-up\"><\/i>' : 'Show more <i class=\"fa-solid fa-chevron-down\"><\/i>';\r\n  renderBrands(brandsExpanded);\r\n});\r\ndocument.getElementById(\"clearBrands\").addEventListener(\"click\", ()=>{\r\n  state.brands.clear(); render();\r\n});\r\n\r\n\/* =========================================================\r\n   FILTER \/ SORT\r\n   ========================================================= *\/\r\nfunction getFiltered(){\r\n  let list = PRODUCTS.slice();\r\n  if(state.category) list = list.filter(p=>p.category===state.category);\r\n  if(state.brands.size) list = list.filter(p=>state.brands.has(p.brand));\r\n  if(state.query){\r\n    const q = state.query.toLowerCase();\r\n    list = list.filter(p =>\r\n      p.name.toLowerCase().includes(q) ||\r\n      p.brand.toLowerCase().includes(q) ||\r\n      p.categoryLabel.toLowerCase().includes(q) ||\r\n      p.type.toLowerCase().includes(q) ||\r\n      p.desc.toLowerCase().includes(q)\r\n    );\r\n  }\r\n  switch(state.sort){\r\n    case \"name-asc\": list.sort((a,b)=>a.name.localeCompare(b.name)); break;\r\n    case \"name-desc\": list.sort((a,b)=>b.name.localeCompare(a.name)); break;\r\n    case \"brand-asc\": list.sort((a,b)=>a.brand.localeCompare(b.brand)); break;\r\n    case \"brand-desc\": list.sort((a,b)=>b.brand.localeCompare(a.brand)); break;\r\n    default: break; \/\/ popular = original order\r\n  }\r\n  return list;\r\n}\r\n\r\n\/* =========================================================\r\n   RENDER: GRID\r\n   ========================================================= *\/\r\nfunction cardHTML(p){\r\n  const heartActive = state.wishlist.has(p.id) ? \"active\" : \"\";\r\n  const compareActive = state.compare.has(p.id) ? \"active\" : \"\";\r\n  return (\r\n    '<div class=\"amcom-card\" data-id=\"'+p.id+'\">'+\r\n      '<div class=\"amcom-thumb\">'+icon(p.color, p.brand.slice(0,2).toUpperCase())+\r\n        '<button type=\"button\" class=\"amcom-heart '+heartActive+'\" data-action=\"wishlist\" data-id=\"'+p.id+'\"><i class=\"fa-'+(state.wishlist.has(p.id)?'solid':'regular')+' fa-heart\"><\/i><\/button>'+\r\n      '<\/div>'+\r\n      '<div class=\"amcom-card-body\">'+\r\n        '<span class=\"amcom-brand-tag\">'+p.brand+'<\/span>'+\r\n        '<h4>'+p.name+'<\/h4>'+\r\n        '<p class=\"desc\">'+p.desc+'<\/p>'+\r\n        '<div class=\"amcom-card-actions\">'+\r\n          '<button type=\"button\" data-action=\"quickview\" data-id=\"'+p.id+'\"><i class=\"fa-regular fa-eye\"><\/i> Quick View<\/button>'+\r\n          '<button type=\"button\" class=\"'+compareActive+'\" data-action=\"compare\" data-id=\"'+p.id+'\"><i class=\"fa-solid fa-code-compare\"><\/i> Compare<\/button>'+\r\n        '<\/div>'+\r\n      '<\/div>'+\r\n    '<\/div>'\r\n  );\r\n}\r\n\r\nfunction renderGrid(){\r\n  const grid = document.getElementById(\"productGrid\");\r\n  const list = getFiltered();\r\n  grid.classList.toggle(\"list-mode\", state.view===\"list\");\r\n  document.getElementById(\"resultsLabel\").textContent =\r\n    list.length ? \"Showing 1\u2013\"+list.length+\" of \"+list.length+\" Results\" : \"0 Results\";\r\n\r\n  if(!list.length){\r\n    grid.innerHTML = '<div class=\"amcom-empty\" style=\"grid-column:1\/-1;\"><i class=\"fa-solid fa-magnifying-glass\" style=\"font-size:26px;margin-bottom:10px;display:block;\"><\/i>No products match your search. Try a different keyword or filter.<\/div>';\r\n    return;\r\n  }\r\n  grid.innerHTML = list.map(cardHTML).join(\"\");\r\n\r\n  grid.querySelectorAll('[data-action=\"wishlist\"]').forEach(btn=>{\r\n    btn.addEventListener(\"click\", (e)=>{ e.stopPropagation(); toggleWishlist(btn.dataset.id); });\r\n  });\r\n  grid.querySelectorAll('[data-action=\"compare\"]').forEach(btn=>{\r\n    btn.addEventListener(\"click\", (e)=>{ e.stopPropagation(); toggleCompare(btn.dataset.id); });\r\n  });\r\n  grid.querySelectorAll('[data-action=\"quickview\"]').forEach(btn=>{\r\n    btn.addEventListener(\"click\", (e)=>{ e.stopPropagation(); openModal(btn.dataset.id); });\r\n  });\r\n  grid.querySelectorAll(\".amcom-card\").forEach(card=>{\r\n    card.addEventListener(\"click\", ()=> openModal(card.dataset.id));\r\n  });\r\n}\r\n\r\n\/* =========================================================\r\n   WISHLIST \/ COMPARE\r\n   ========================================================= *\/\r\nfunction toggleWishlist(id){\r\n  if(state.wishlist.has(id)) state.wishlist.delete(id); else state.wishlist.add(id);\r\n  persist();\r\n  render();\r\n  if(currentProductId===id) updateModalWishlist();\r\n}\r\nfunction toggleCompare(id){\r\n  if(state.compare.has(id)) state.compare.delete(id);\r\n  else{\r\n    if(state.compare.size>=4){ alert(\"You can compare up to 4 products at a time.\"); return; }\r\n    state.compare.add(id);\r\n  }\r\n  persist();\r\n  render();\r\n}\r\nfunction updateCounts(){\r\n  document.getElementById(\"wishlistCount\").textContent = state.wishlist.size;\r\n  document.getElementById(\"compareCount\").textContent = state.compare.size;\r\n}\r\n\r\n\/* =========================================================\r\n   QUICK VIEW MODAL\r\n   ========================================================= *\/\r\nlet currentProductId = null;\r\nconst modal = document.getElementById(\"productModal\");\r\n\r\nfunction openModal(id){\r\n  const p = PRODUCTS.find(x=>x.id===id);\r\n  if(!p) return;\r\n  currentProductId = id;\r\n\r\n  document.getElementById(\"modalImage\").innerHTML = icon(p.color, p.brand.slice(0,2).toUpperCase());\r\n  document.getElementById(\"modalBrand\").textContent = p.brand;\r\n  document.getElementById(\"modalName\").textContent = p.name;\r\n  document.getElementById(\"modalModel\").textContent = p.model;\r\n  document.getElementById(\"modalType\").textContent = p.type;\r\n  document.getElementById(\"modalCategory\").textContent = p.categoryLabel;\r\n  document.getElementById(\"modalDesc\").textContent = p.desc;\r\n\r\n  const specsEl = document.getElementById(\"modalSpecs\");\r\n  specsEl.innerHTML = \"\";\r\n  p.specs.forEach(s=>{\r\n    const li = document.createElement(\"li\");\r\n    li.textContent = s;\r\n    specsEl.appendChild(li);\r\n  });\r\n\r\n  const contactBtn = document.getElementById(\"modalContact\");\r\n  contactBtn.href = \"mailto:info@amcommarine.com?subject=\" +\r\n    encodeURIComponent(\"Request Information - \"+p.brand+\" \"+p.model) +\r\n    \"&body=\" + encodeURIComponent(\"Hello AMCOM Marine,\\n\\nI would like more information about the \"+p.name+\" (\"+p.model+\").\\n\\nThank you.\");\r\n\r\n  updateModalWishlist();\r\n  renderRelated(p);\r\n\r\n  modal.classList.add(\"active\");\r\n  document.body.classList.add(\"modal-open\");\r\n}\r\n\r\nfunction updateModalWishlist(){\r\n  if(!currentProductId) return;\r\n  const btn = document.getElementById(\"modalWishlist\");\r\n  const active = state.wishlist.has(currentProductId);\r\n  btn.innerHTML = active ? '<i class=\"fa-solid fa-heart\"><\/i> Remove from Wishlist' : '<i class=\"fa-regular fa-heart\"><\/i> Add to Wishlist';\r\n  btn.classList.toggle(\"active\", active);\r\n}\r\ndocument.getElementById(\"modalWishlist\").addEventListener(\"click\", ()=>{\r\n  if(currentProductId) toggleWishlist(currentProductId);\r\n});\r\n\r\nfunction renderRelated(p){\r\n  const related = PRODUCTS.filter(x=>x.id!==p.id && (x.category===p.category || x.brand===p.brand)).slice(0,5);\r\n  const el = document.getElementById(\"modalRelated\");\r\n  if(!related.length){ el.innerHTML = '<span style=\"font-size:12.5px;color:#6b7686;\">No related products found.<\/span>'; return; }\r\n  el.innerHTML = related.map(r =>\r\n    '<div class=\"modal-related-item\" data-id=\"'+r.id+'\">'+icon(r.color, r.brand.slice(0,2).toUpperCase())+'<span>'+r.name+'<\/span><\/div>'\r\n  ).join(\"\");\r\n  el.querySelectorAll(\".modal-related-item\").forEach(item=>{\r\n    item.addEventListener(\"click\", ()=> openModal(item.dataset.id));\r\n  });\r\n}\r\n\r\nfunction closeModal(){\r\n  modal.classList.remove(\"active\");\r\n  document.body.classList.remove(\"modal-open\");\r\n  currentProductId = null;\r\n}\r\ndocument.getElementById(\"modalClose\").addEventListener(\"click\", closeModal);\r\ndocument.getElementById(\"modalOverlay\").addEventListener(\"click\", closeModal);\r\ndocument.addEventListener(\"keydown\", (e)=>{ if(e.key===\"Escape\") closeModal(); });\r\n\r\n\/* =========================================================\r\n   TOOLBAR: VIEW \/ SORT\r\n   ========================================================= *\/\r\ndocument.getElementById(\"gridBtn\").addEventListener(\"click\", function(){\r\n  state.view=\"grid\";\r\n  this.classList.add(\"active\");\r\n  document.getElementById(\"listBtn\").classList.remove(\"active\");\r\n  renderGrid();\r\n});\r\ndocument.getElementById(\"listBtn\").addEventListener(\"click\", function(){\r\n  state.view=\"list\";\r\n  this.classList.add(\"active\");\r\n  document.getElementById(\"gridBtn\").classList.remove(\"active\");\r\n  renderGrid();\r\n});\r\ndocument.getElementById(\"sortSelect\").addEventListener(\"change\", (e)=>{\r\n  state.sort = e.target.value;\r\n  renderGrid();\r\n});\r\n\r\n\/* =========================================================\r\n   SEARCH (top bar + sidebar \"product research\")\r\n   ========================================================= *\/\r\nfunction runSearch(value){\r\n  state.query = value.trim();\r\n  renderGrid();\r\n}\r\ndocument.getElementById(\"topSearchBtn\").addEventListener(\"click\", ()=> runSearch(document.getElementById(\"topSearch\").value));\r\ndocument.getElementById(\"topSearch\").addEventListener(\"keydown\", (e)=>{ if(e.key===\"Enter\") runSearch(e.target.value); });\r\ndocument.getElementById(\"topSearch\").addEventListener(\"input\", (e)=> runSearch(e.target.value));\r\n\r\ndocument.getElementById(\"sideSearchBtn\").addEventListener(\"click\", ()=> runSearch(document.getElementById(\"sideSearch\").value));\r\ndocument.getElementById(\"sideSearch\").addEventListener(\"keydown\", (e)=>{ if(e.key===\"Enter\") runSearch(e.target.value); });\r\ndocument.getElementById(\"sideSearch\").addEventListener(\"input\", (e)=> runSearch(e.target.value));\r\n\r\n\/* =========================================================\r\n   MASTER RENDER\r\n   ========================================================= *\/\r\nfunction render(){\r\n  renderCategories();\r\n  renderBrands(brandsExpanded);\r\n  renderGrid();\r\n  updateCounts();\r\n}\r\nrender();\r\n\r\n})();\r\n<\/script>\r\n<\/body>\r\n<\/html>\r\n\t\t\t\t<\/div>\n\t\t\n<\/div>\n\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Marine Product&#8217;s &amp; Equipment Trusted Marine Equipment, Leading Brands &amp; Reliable Solutions forEvery Vessel. AMCOM [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-475","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/amcommarine.com\/index.php\/wp-json\/wp\/v2\/pages\/475","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/amcommarine.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/amcommarine.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/amcommarine.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/amcommarine.com\/index.php\/wp-json\/wp\/v2\/comments?post=475"}],"version-history":[{"count":25,"href":"https:\/\/amcommarine.com\/index.php\/wp-json\/wp\/v2\/pages\/475\/revisions"}],"predecessor-version":[{"id":700,"href":"https:\/\/amcommarine.com\/index.php\/wp-json\/wp\/v2\/pages\/475\/revisions\/700"}],"wp:attachment":[{"href":"https:\/\/amcommarine.com\/index.php\/wp-json\/wp\/v2\/media?parent=475"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}