{"id":9369,"date":"2026-04-14T13:18:50","date_gmt":"2026-04-14T18:18:50","guid":{"rendered":"https:\/\/clarvi.com\/products-2\/"},"modified":"2026-08-19T13:29:33","modified_gmt":"2026-08-19T18:29:33","slug":"products-2","status":"publish","type":"page","link":"https:\/\/clarvi.com\/en\/products-2\/","title":{"rendered":"Products"},"content":{"rendered":"<div id=\"clarvi-cat-root\">\r\n\r\n<style>\r\n@import url('https:\/\/fonts.googleapis.com\/css2?family=Mulish:wght@400;600;700;800;900&display=swap');\r\n#clarvi-cat-root{font-family:'Mulish',sans-serif;width:100%;color:#0E1422;padding:0;margin:0 auto}\r\n#clarvi-cat-root *{box-sizing:border-box}\r\n#clarvi-cat-root .eyebrow{font-size:10px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:#1690C2;margin-bottom:8px}\r\n#clarvi-cat-root h2.hero-t{font-size:28px;font-weight:900;letter-spacing:-.025em;color:#0E1422;margin-bottom:8px;line-height:1.1}\r\n#clarvi-cat-root .hero-lead{font-size:15px;color:#5F6675;margin-bottom:20px;line-height:1.65}\r\n#clarvi-cat-root .meta-row{display:flex;gap:24px;font-size:13px;color:#5F6675;border-top:1px solid rgba(0,0,0,.08);padding-top:16px;margin-bottom:24px;flex-wrap:wrap}\r\n#clarvi-cat-root .meta-row strong{color:#0E1422;font-weight:700}\r\n#clarvi-cat-root .layout{display:grid;grid-template-columns:220px 1fr;gap:0;min-height:500px}\r\n#clarvi-cat-root #ccv-catalog{padding:0 4px}\r\n#clarvi-cat-root .sidebar{padding:0 20px 0 0}\r\n#clarvi-cat-root .sb-label{font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:#8A8F9C;margin-bottom:8px;display:block}\r\n#clarvi-cat-root .sb-section{margin-bottom:24px}\r\n#clarvi-cat-root .sb-item{display:flex;align-items:center;justify-content:space-between;width:100%;padding:8px 12px;border-radius:8px;cursor:pointer;font-size:14px;font-weight:600;color:#5F6675;border:none;background:none;text-align:left;font-family:'Mulish',sans-serif;transition:all .15s;margin-bottom:2px}\r\n#clarvi-cat-root .sb-item:hover{background:#EEF3FB;color:#0F2C5C}\r\n#clarvi-cat-root .sb-item.active{background:#0F2C5C;color:#fff}\r\n#clarvi-cat-root .sb-item .n{font-size:11px;opacity:.65;font-family:monospace}\r\n#clarvi-cat-root .sb-check{display:flex;align-items:center;gap:8px;padding:6px 4px;font-size:13px;color:#5F6675;cursor:pointer;font-family:'Mulish',sans-serif;margin-bottom:2px}\r\n#clarvi-cat-root .sb-check input{width:15px;height:15px;accent-color:#0F2C5C;cursor:pointer;flex-shrink:0}\r\n#clarvi-cat-root .sb-check .bn{margin-left:auto;font-size:11px;color:#8A8F9C;font-family:monospace}\r\n#clarvi-cat-root .sb-div{border:none;border-top:1px solid rgba(0,0,0,.08);margin:4px 0 20px}\r\n#clarvi-cat-root .clear-btn{width:100%;padding:8px;border-radius:8px;border:1px solid rgba(0,0,0,.12);background:none;font-size:12px;color:#5F6675;cursor:pointer;font-family:'Mulish',sans-serif;transition:all .15s}\r\n#clarvi-cat-root .clear-btn:hover{border-color:#0F2C5C;color:#0F2C5C}\r\n#clarvi-cat-root .toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px;flex-wrap:wrap}\r\n#clarvi-cat-root .search-wrap{display:flex;align-items:center;gap:8px;padding:9px 16px;border:1px solid rgba(0,0,0,.16);border-radius:999px;background:#fff;flex:1;max-width:320px}\r\n#clarvi-cat-root .search-wrap input{border:none;outline:none;background:none;font-size:14px;flex:1;font-family:'Mulish',sans-serif;color:#0E1422;width:100%}\r\n#clarvi-cat-root .tb-right{display:flex;align-items:center;gap:10px}\r\n#clarvi-cat-root .rlabel{font-size:13px;color:#5F6675}\r\n#clarvi-cat-root .sort-sel{padding:8px 14px;border:1px solid rgba(0,0,0,.16);border-radius:999px;font-size:13px;font-weight:600;font-family:'Mulish',sans-serif;color:#0E1422;background:#fff;cursor:pointer;outline:none}\r\n#clarvi-cat-root .vtoggle{display:flex;border:1px solid rgba(0,0,0,.16);border-radius:8px;overflow:hidden}\r\n#clarvi-cat-root .vbtn{padding:7px 9px;border:none;background:#fff;color:#5F6675;cursor:pointer;line-height:1;font-size:15px;transition:all .15s}\r\n#clarvi-cat-root .vbtn.active{background:#0F2C5C;color:#fff}\r\n#clarvi-cat-root .pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px}\r\n#clarvi-cat-root .pcard{background:#fff;border:1px solid rgba(0,0,0,.09);border-radius:12px;overflow:hidden;cursor:pointer;transition:border-color .2s,transform .2s;display:flex;flex-direction:column}\r\n#clarvi-cat-root .pcard:hover{border-color:#0F2C5C;transform:translateY(-3px);box-shadow:0 6px 20px rgba(15,44,92,.08)}\r\n#clarvi-cat-root .pcard-img{aspect-ratio:4\/3;background:repeating-linear-gradient(135deg,transparent 0 12px,rgba(15,44,92,.025) 12px 13px),#F4F6FA;position:relative;border-bottom:1px solid rgba(0,0,0,.08)}\r\n#clarvi-cat-root .brand-pill{position:absolute;top:10px;left:10px;background:#fff;border:1px solid rgba(0,0,0,.09);font-size:9px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;padding:3px 8px;border-radius:999px;color:#1F2937}\r\n#clarvi-cat-root .pcard-body{padding:12px 14px 14px;flex:1;display:flex;flex-direction:column}\r\n#clarvi-cat-root .pcard-name{font-size:14px;font-weight:800;color:#0E1422;line-height:1.25;margin-bottom:5px}\r\n#clarvi-cat-root .pcard-tagline{font-size:12px;color:#5F6675;line-height:1.5;flex:1;margin-bottom:10px}\r\n#clarvi-cat-root .pcard-tags{display:flex;gap:5px;flex-wrap:wrap;padding-top:10px;border-top:1px solid rgba(0,0,0,.08)}\r\n#clarvi-cat-root .tag{font-size:10px;font-weight:700;padding:3px 7px;border-radius:4px;background:#F4F6FA;color:#5F6675}\r\n#clarvi-cat-root .plist{border:1px solid rgba(0,0,0,.09);border-radius:12px;overflow:hidden;background:#fff}\r\n#clarvi-cat-root .prow{display:grid;grid-template-columns:52px 1fr 140px;gap:14px;align-items:center;padding:13px 16px;border-bottom:1px solid rgba(0,0,0,.08);cursor:pointer;transition:background .15s}\r\n#clarvi-cat-root .prow:last-child{border-bottom:none}\r\n#clarvi-cat-root .prow:hover{background:#F4F6FA}\r\n#clarvi-cat-root .prow-thumb{width:44px;height:44px;border-radius:8px;background:#F4F6FA;border:1px solid rgba(0,0,0,.08)}\r\n#clarvi-cat-root .prow-name{font-size:14px;font-weight:800;color:#0E1422;margin-bottom:2px}\r\n#clarvi-cat-root .prow-tag{font-size:12px;color:#5F6675}\r\n#clarvi-cat-root .prow-brand{font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:#5F6675}\r\n#clarvi-cat-root .no-res{text-align:center;padding:60px 20px;color:#5F6675;font-size:14px}\r\n\/* DETAIL *\/\r\n#clarvi-cat-root .detail-wrap{padding:8px 0 40px}\r\n#clarvi-cat-root .crumbs{display:flex;align-items:center;gap:6px;font-size:12px;color:#5F6675;margin-bottom:20px;flex-wrap:wrap}\r\n#clarvi-cat-root .crumb{cursor:pointer;color:#5F6675;transition:color .15s;background:none;border:none;font-family:'Mulish',sans-serif;font-size:12px;padding:0}\r\n#clarvi-cat-root .crumb:hover{color:#0F2C5C}\r\n#clarvi-cat-root .detail-layout{display:grid;grid-template-columns:1fr 1fr;gap:36px;align-items:start;margin-bottom:36px}\r\n#clarvi-cat-root .gal-main{aspect-ratio:1;border:1px solid rgba(0,0,0,.09);border-radius:12px;background:repeating-linear-gradient(135deg,transparent 0 14px,rgba(15,44,92,.025) 14px 15px),#F4F6FA;position:relative;display:flex;align-items:center;justify-content:center}\r\n#clarvi-cat-root .gal-lbl{position:absolute;bottom:12px;left:14px;font-size:10px;color:#8A8F9C;font-family:monospace;opacity:.7}\r\n#clarvi-cat-root .gal-thumbs{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:10px}\r\n#clarvi-cat-root .gthumb{aspect-ratio:1;border-radius:8px;border:1px solid rgba(0,0,0,.09);background:#F4F6FA;cursor:pointer}\r\n#clarvi-cat-root .gthumb:first-child{border-color:#0F2C5C}\r\n#clarvi-cat-root .d-brand-row{display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap}\r\n#clarvi-cat-root .d-brand-pill{font-size:10px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:#0C447C;background:#E6F1FB;padding:5px 10px;border-radius:8px}\r\n#clarvi-cat-root .d-cat-link{font-size:13px;color:#5F6675;cursor:pointer;transition:color .15s;background:none;border:none;font-family:'Mulish',sans-serif;padding:0}\r\n#clarvi-cat-root .d-cat-link:hover{color:#0F2C5C}\r\n#clarvi-cat-root .d-name{font-size:26px;font-weight:900;letter-spacing:-.025em;color:#0E1422;line-height:1.1;margin-bottom:8px}\r\n#clarvi-cat-root .d-lead{font-size:15px;color:#5F6675;line-height:1.6;margin-bottom:10px}\r\n#clarvi-cat-root .d-desc{font-size:14px;color:#5F6675;line-height:1.75;margin-bottom:18px}\r\n#clarvi-cat-root .d-tags{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:20px}\r\n#clarvi-cat-root .dtag{font-size:11px;font-weight:700;padding:4px 10px;border-radius:999px;background:#F4F6FA;color:#5F6675}\r\n#clarvi-cat-root .cta-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:24px}\r\n#clarvi-cat-root .btn-fill{display:flex;align-items:center;justify-content:center;gap:8px;padding:12px 16px;border-radius:999px;border:none;background:#0F2C5C;color:#fff;font-size:14px;font-weight:700;cursor:pointer;font-family:'Mulish',sans-serif;transition:background .15s;width:100%}\r\n#clarvi-cat-root .btn-fill:hover{background:#0A2049}\r\n#clarvi-cat-root .btn-out{display:flex;align-items:center;justify-content:center;gap:8px;padding:12px 16px;border-radius:999px;border:1px solid rgba(0,0,0,.16);background:#fff;color:#0E1422;font-size:14px;font-weight:700;cursor:pointer;font-family:'Mulish',sans-serif;transition:all .15s;width:100%}\r\n#clarvi-cat-root .btn-out:hover{border-color:#0F2C5C;color:#0F2C5C}\r\n#clarvi-cat-root .tabs{display:flex;border-bottom:1px solid rgba(0,0,0,.09);margin-bottom:18px}\r\n#clarvi-cat-root .tab-btn{padding:10px 16px;font-size:14px;font-weight:700;color:#5F6675;cursor:pointer;border:none;background:none;font-family:'Mulish',sans-serif;border-bottom:2px solid transparent;margin-bottom:-1px;transition:all .15s}\r\n#clarvi-cat-root .tab-btn:hover{color:#0F2C5C}\r\n#clarvi-cat-root .tab-btn.active{color:#0F2C5C;border-bottom-color:#0F2C5C}\r\n#clarvi-cat-root .tab-panel{display:none}\r\n#clarvi-cat-root .tab-panel.active{display:block}\r\n#clarvi-cat-root .spec-row{display:grid;grid-template-columns:150px 1fr;gap:10px;padding:10px 0;border-bottom:1px solid rgba(0,0,0,.08);font-size:14px}\r\n#clarvi-cat-root .spec-row:last-child{border-bottom:none}\r\n#clarvi-cat-root .spec-k{color:#5F6675;font-weight:600}\r\n#clarvi-cat-root .spec-v{color:#0E1422;font-weight:500}\r\n#clarvi-cat-root .app-chips{display:flex;flex-wrap:wrap;gap:8px;padding-top:4px}\r\n#clarvi-cat-root .app-chip{font-size:13px;font-weight:600;padding:7px 14px;border-radius:8px;background:#F4F6FA;color:#5F6675}\r\n#clarvi-cat-root .doc-item{display:flex;align-items:center;justify-content:space-between;padding:11px 14px;border:1px solid rgba(0,0,0,.09);border-radius:8px;background:#fff;cursor:pointer;transition:border-color .15s;margin-bottom:8px}\r\n#clarvi-cat-root .doc-item:hover{border-color:#0F2C5C}\r\n#clarvi-cat-root .doc-name{font-size:14px;font-weight:700;color:#0E1422;margin-bottom:2px}\r\n#clarvi-cat-root .doc-meta{font-size:11px;color:#5F6675;font-family:monospace}\r\n#clarvi-cat-root .rel-section{margin-top:32px;padding-top:24px;border-top:1px solid rgba(0,0,0,.09)}\r\n#clarvi-cat-root .rel-title{font-size:17px;font-weight:800;color:#0E1422;margin-bottom:14px}\r\n#clarvi-cat-root .rel-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}\r\n#clarvi-cat-root .rcard{border:1px solid rgba(0,0,0,.09);border-radius:12px;overflow:hidden;cursor:pointer;transition:border-color .15s,transform .15s;background:#fff}\r\n#clarvi-cat-root .rcard:hover{border-color:#0F2C5C;transform:translateY(-2px)}\r\n#clarvi-cat-root .rcard-img{height:80px;background:repeating-linear-gradient(135deg,transparent 0 10px,rgba(15,44,92,.025) 10px 11px),#F4F6FA;border-bottom:1px solid rgba(0,0,0,.08)}\r\n#clarvi-cat-root .rcard-body{padding:10px 12px}\r\n#clarvi-cat-root .rcard-name{font-size:13px;font-weight:800;color:#0E1422;margin-bottom:3px}\r\n#clarvi-cat-root .rcard-brand{font-size:10px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#5F6675}\r\n\/* DRAWER *\/\r\n#clarvi-scrim{position:fixed;inset:0;background:rgba(14,20,34,.3);z-index:99998;opacity:0;pointer-events:none;transition:opacity .25s}\r\n#clarvi-scrim.open{opacity:1;pointer-events:all}\r\n#clarvi-drawer{position:fixed;top:0;right:-500px;width:460px;max-width:95vw;height:100vh;background:#fff;z-index:99999;transition:right .3s cubic-bezier(.32,.72,0,1);display:flex;flex-direction:column;border-left:1px solid rgba(0,0,0,.09);font-family:'Mulish',sans-serif}\r\n#clarvi-drawer.open{right:0}\r\n#clarvi-drawer .dh{display:flex;justify-content:space-between;align-items:center;padding:18px 24px;border-bottom:1px solid rgba(0,0,0,.09);flex-shrink:0}\r\n#clarvi-drawer .dh h3{font-size:16px;font-weight:800;color:#0E1422;margin:0}\r\n#clarvi-drawer .dc{width:32px;height:32px;border-radius:999px;border:1px solid rgba(0,0,0,.12);background:none;cursor:pointer;font-size:18px;color:#5F6675;line-height:1;display:flex;align-items:center;justify-content:center}\r\n#clarvi-drawer .db{flex:1;overflow-y:auto;padding:20px 24px}\r\n#clarvi-drawer .df{padding:18px 24px;border-top:1px solid rgba(0,0,0,.09);flex-shrink:0}\r\n#clarvi-drawer .field{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}\r\n#clarvi-drawer .field label{font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#8A8F9C}\r\n#clarvi-drawer .field input,#clarvi-drawer .field textarea{padding:9px 12px;border:1px solid rgba(0,0,0,.16);border-radius:8px;font-family:'Mulish',sans-serif;font-size:14px;color:#0E1422;outline:none;width:100%}\r\n#clarvi-drawer .field textarea{resize:vertical;min-height:70px}\r\n#clarvi-drawer .field-2{display:grid;grid-template-columns:1fr 1fr;gap:10px}\r\n#clarvi-drawer .sub-btn{width:100%;padding:13px;border-radius:999px;border:none;background:#0F2C5C;color:#fff;font-size:15px;font-weight:800;cursor:pointer;font-family:'Mulish',sans-serif}\r\n#clarvi-drawer .sub-btn:hover{background:#0A2049}\r\n#clarvi-drawer .note{font-size:12px;color:#5F6675;text-align:center;margin-top:10px}\r\n#clarvi-drawer .qi{display:grid;grid-template-columns:48px 1fr auto;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid rgba(0,0,0,.08)}\r\n#clarvi-drawer .qi:last-child{border-bottom:none}\r\n#clarvi-drawer .qi-thumb{width:44px;height:44px;background:#F4F6FA;border-radius:8px;border:1px solid rgba(0,0,0,.09)}\r\n#clarvi-drawer .qi-name{font-size:13px;font-weight:700;color:#0E1422;margin-bottom:2px}\r\n#clarvi-drawer .qi-brand{font-size:11px;color:#5F6675}\r\n#clarvi-drawer .qi-rm{font-size:11px;color:#5F6675;text-decoration:underline;cursor:pointer;background:none;border:none;font-family:'Mulish',sans-serif;padding:0;margin-top:3px;display:block}\r\n#clarvi-drawer .qty{display:flex;align-items:center;gap:8px}\r\n#clarvi-drawer .qb{width:26px;height:26px;border-radius:8px;border:1px solid rgba(0,0,0,.16);background:#fff;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#0E1422}\r\n#clarvi-drawer .qn{font-size:13px;min-width:18px;text-align:center;font-family:monospace;color:#0E1422}\r\n\/* RESPONSIVE *\/\r\n@media(max-width:700px){\r\n  #clarvi-cat-root .layout{grid-template-columns:1fr}\r\n  #clarvi-cat-root .sidebar{display:none}\r\n  #clarvi-cat-root .detail-layout{grid-template-columns:1fr}\r\n  #clarvi-cat-root .rel-grid{grid-template-columns:repeat(2,1fr)}\r\n  #clarvi-cat-root .cta-row{grid-template-columns:1fr}\r\n}\r\n<\/style>\r\n\r\n<!-- CATALOG VIEW -->\r\n<div id=\"ccv-catalog\">\r\n<div class=\"eyebrow\" id=\"cc-eyebrow\">Todo el cat\u00e1logo<\/div>\r\n<h2 class=\"hero-t\" id=\"cc-hero-t\">Cat\u00e1logo completo<\/h2>\r\n<p class=\"hero-lead\" id=\"cc-hero-lead\">Todos los equipos, qu\u00edmicos y materiales filtrantes en distribuci\u00f3n por CLARVI.<\/p>\r\n<div class=\"meta-row\">\r\n  <span><strong id=\"cc-mc\">14<\/strong> productos<\/span>\r\n  <span><strong id=\"cc-mb\">7<\/strong> marcas<\/span>\r\n  <span>Hojas t\u00e9cnicas \u00b7 <strong>PDF descargable<\/strong><\/span>\r\n<\/div>\r\n<div class=\"layout\">\r\n  <aside class=\"sidebar\">\r\n    <div class=\"sb-section\">\r\n      <span class=\"sb-label\">Categor\u00edas<\/span>\r\n      <button class=\"sb-item active\" onclick=\"ccCat('all')\">Todas <span class=\"n\" id=\"ccn-all\">14<\/span><\/button>\r\n      <button class=\"sb-item\" onclick=\"ccCat('cloracion')\">Cloraci\u00f3n <span class=\"n\" id=\"ccn-cloracion\">2<\/span><\/button>\r\n      <button class=\"sb-item\" onclick=\"ccCat('dosificacion')\">Dosificaci\u00f3n <span class=\"n\" id=\"ccn-dosificacion\">3<\/span><\/button>\r\n      <button class=\"sb-item\" onclick=\"ccCat('desinfeccion-uv')\">Desinfecci\u00f3n UV <span class=\"n\" id=\"ccn-desinfeccion-uv\">2<\/span><\/button>\r\n      <button class=\"sb-item\" onclick=\"ccCat('ozono')\">Ozono <span class=\"n\" id=\"ccn-ozono\">1<\/span><\/button>\r\n      <button class=\"sb-item\" onclick=\"ccCat('filtracion')\">Filtraci\u00f3n <span class=\"n\" id=\"ccn-filtracion\">2<\/span><\/button>\r\n      <button class=\"sb-item\" onclick=\"ccCat('analizadores')\">Analizadores <span class=\"n\" id=\"ccn-analizadores\">2<\/span><\/button>\r\n      <button class=\"sb-item\" onclick=\"ccCat('quimicos')\">Productos qu\u00edmicos <span class=\"n\" id=\"ccn-quimicos\">1<\/span><\/button>\r\n      <button class=\"sb-item\" onclick=\"ccCat('bombas')\">Bombas y accesorios <span class=\"n\" id=\"ccn-bombas\">1<\/span><\/button>\r\n    <\/div>\r\n    <hr class=\"sb-div\">\r\n    <div class=\"sb-section\">\r\n      <span class=\"sb-label\">Marca<\/span>\r\n      <label class=\"sb-check\"><input type=\"checkbox\" onchange=\"ccBrand('CLARVI',this.checked)\"> <span>CLARVI<\/span><span class=\"bn\" id=\"ccb-CLARVI\">5<\/span><\/label>\r\n      <label class=\"sb-check\"><input type=\"checkbox\" onchange=\"ccBrand('Wallace & Tiernan',this.checked)\"> <span>Wallace & Tiernan<\/span><span class=\"bn\" id=\"ccb-WT\">4<\/span><\/label>\r\n      <label class=\"sb-check\"><input type=\"checkbox\" onchange=\"ccBrand('Pacific Ozone',this.checked)\"> <span>Pacific Ozone<\/span><span class=\"bn\" id=\"ccb-PO\">1<\/span><\/label>\r\n      <label class=\"sb-check\"><input type=\"checkbox\" onchange=\"ccBrand('ETS-UV',this.checked)\"> <span>ETS-UV<\/span><span class=\"bn\" id=\"ccb-ETSUV\">1<\/span><\/label>\r\n      <label class=\"sb-check\"><input type=\"checkbox\" onchange=\"ccBrand('Halogen Valve',this.checked)\"> <span>Halogen Valve<\/span><span class=\"bn\" id=\"ccb-HV\">1<\/span><\/label>\r\n      <label class=\"sb-check\"><input type=\"checkbox\" onchange=\"ccBrand('Force Flow',this.checked)\"> <span>Force Flow<\/span><span class=\"bn\" id=\"ccb-FF\">1<\/span><\/label>\r\n      <label class=\"sb-check\"><input type=\"checkbox\" onchange=\"ccBrand('LG Chem',this.checked)\"> <span>LG Chem<\/span><span class=\"bn\" id=\"ccb-LG\">1<\/span><\/label>\r\n    <\/div>\r\n    <hr class=\"sb-div\">\r\n    <div class=\"sb-section\">\r\n      <span class=\"sb-label\">Aplicaci\u00f3n<\/span>\r\n      <label class=\"sb-check\"><input type=\"checkbox\"> <span>Municipal<\/span><\/label>\r\n      <label class=\"sb-check\"><input type=\"checkbox\"> <span>Industrial<\/span><\/label>\r\n      <label class=\"sb-check\"><input type=\"checkbox\"> <span>Comercial<\/span><\/label>\r\n      <label class=\"sb-check\"><input type=\"checkbox\"> <span>Residencial<\/span><\/label>\r\n    <\/div>\r\n    <button class=\"clear-btn\" onclick=\"ccClear()\">Limpiar filtros<\/button>\r\n  <\/aside>\r\n  <div>\r\n    <div class=\"toolbar\">\r\n      <div class=\"search-wrap\">\r\n        <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#5F6675\" stroke-width=\"1.5\"><circle cx=\"11\" cy=\"11\" r=\"8\"\/><path d=\"m21 21-4.35-4.35\"\/><\/svg>\r\n        <input type=\"text\" id=\"cc-q\" placeholder=\"Buscar en el cat\u00e1logo\u2026\" oninput=\"ccRender()\">\r\n      <\/div>\r\n      <div class=\"tb-right\">\r\n        <span class=\"rlabel\" id=\"cc-rl\">14 resultados<\/span>\r\n        <select class=\"sort-sel\" id=\"cc-sort\" onchange=\"ccRender()\">\r\n          <option value=\"rel\">M\u00e1s relevantes<\/option>\r\n          <option value=\"az\">Nombre A\u2013Z<\/option>\r\n          <option value=\"za\">Nombre Z\u2013A<\/option>\r\n        <\/select>\r\n        <div class=\"vtoggle\">\r\n          <button class=\"vbtn active\" id=\"cc-vg\" onclick=\"ccView('grid')\" title=\"Cuadr\u00edcula\">&#9632;&#9632;<\/button>\r\n          <button class=\"vbtn\" id=\"cc-vl\" onclick=\"ccView('list')\" title=\"Lista\">&#9776;<\/button>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n    <div id=\"cc-grid\"><\/div>\r\n<script>setTimeout(function(){var e=document.getElementById(\"cc-grid\");if(e&&e.innerHTML===\"\")ccRender();},500);<\/script>\r\n  <\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n<!-- DETAIL VIEW -->\r\n<div id=\"ccv-detail\" style=\"display:none\">\r\n  <div class=\"detail-wrap\">\r\n    <div class=\"crumbs\" id=\"cc-dcrumbs\"><\/div>\r\n    <div class=\"detail-layout\">\r\n      <div>\r\n        <div class=\"gal-main\"><span class=\"gal-lbl\" id=\"cc-dlbl\"><\/span><\/div>\r\n        <div class=\"gal-thumbs\"><div class=\"gthumb\"><\/div><div class=\"gthumb\"><\/div><div class=\"gthumb\"><\/div><div class=\"gthumb\"><\/div><\/div>\r\n      <\/div>\r\n      <div>\r\n        <div class=\"d-brand-row\"><span class=\"d-brand-pill\" id=\"cc-dbrand\"><\/span><button class=\"d-cat-link\" id=\"cc-dcatlink\"><\/button><\/div>\r\n        <div class=\"d-name\" id=\"cc-dname\"><\/div>\r\n        <div class=\"d-lead\" id=\"cc-dlead\"><\/div>\r\n        <div class=\"d-desc\" id=\"cc-ddesc\"><\/div>\r\n        <div class=\"d-tags\" id=\"cc-dtags\"><\/div>\r\n        <div class=\"cta-row\">\r\n          <button class=\"btn-fill\" id=\"cc-dquote\">+ Agregar a cotizaci\u00f3n<\/button>\r\n          <button class=\"btn-out\" id=\"cc-dficha\">\u2193 Ficha t\u00e9cnica<\/button>\r\n        <\/div>\r\n        <div class=\"tabs\">\r\n          <button class=\"tab-btn active\" onclick=\"ccTab('specs')\">Especificaciones<\/button>\r\n          <button class=\"tab-btn\" onclick=\"ccTab('apps')\">Aplicaciones<\/button>\r\n          <button class=\"tab-btn\" onclick=\"ccTab('docs')\">Documentos<\/button>\r\n        <\/div>\r\n        <div class=\"tab-panel active\" id=\"cc-tspecs\"><\/div>\r\n        <div class=\"tab-panel\" id=\"cc-tapps\"><\/div>\r\n        <div class=\"tab-panel\" id=\"cc-tdocs\"><\/div>\r\n      <\/div>\r\n    <\/div>\r\n    <div class=\"rel-section\"><div class=\"rel-title\">Productos relacionados<\/div><div class=\"rel-grid\" id=\"cc-related\"><\/div><\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<!-- DRAWER -->\r\n<div id=\"clarvi-scrim\" onclick=\"ccCloseD()\"><\/div>\r\n<div id=\"clarvi-drawer\">\r\n  <div class=\"dh\"><h3 id=\"cc-dtitle\">Cotizaci\u00f3n<\/h3><button class=\"dc\" onclick=\"ccCloseD()\">&#10005;<\/button><\/div>\r\n  <div class=\"db\" id=\"cc-db\"><\/div>\r\n  <div class=\"df\" id=\"cc-df\"><\/div>\r\n<\/div>\r\n\r\n<\/div><!-- end clarvi-cat-root -->\r\n\r\n<script>\r\nvar ccData={\r\n  cats:{\r\n    'all':{name:'Todas',label:'Cat\u00e1logo completo',lead:'Todos los equipos, qu\u00edmicos y materiales filtrantes en distribuci\u00f3n por CLARVI.'},\r\n    'cloracion':{name:'Cloraci\u00f3n',label:'Cloraci\u00f3n',lead:'Cloradores de gas al vac\u00edo, actuadores de seguridad y sistemas auxiliares para desinfecci\u00f3n municipal e industrial.'},\r\n    'dosificacion':{name:'Dosificaci\u00f3n',label:'Dosificaci\u00f3n',lead:'Bombas dosificadoras, sistemas compactos integrales y generadores de hipoclorito en sitio.'},\r\n    'desinfeccion-uv':{name:'Desinfecci\u00f3n UV',label:'Desinfecci\u00f3n UV',lead:'Sistemas ultravioleta de baja y media presi\u00f3n para desinfecci\u00f3n sin subproductos qu\u00edmicos.'},\r\n    'ozono':{name:'Ozono',label:'Ozono',lead:'Generadores de ozono industrial y municipal para oxidaci\u00f3n avanzada de contaminantes.'},\r\n    'filtracion':{name:'Filtraci\u00f3n',label:'Filtraci\u00f3n',lead:'Medias filtrantes, membranas de \u00f3smosis inversa y unidades filtrantes a medida.'},\r\n    'analizadores':{name:'Analizadores',label:'Analizadores',lead:'Equipos de medici\u00f3n de cloro, pH, conductividad y turbiedad en l\u00ednea.'},\r\n    'quimicos':{name:'Productos qu\u00edmicos',label:'Productos qu\u00edmicos',lead:'Materiales adsorbentes, antiincrustantes y reactivos certificados NSF.'},\r\n    'bombas':{name:'Bombas y accesorios',label:'Bombas y accesorios',lead:'B\u00e1sculas digitales, bombas de proceso y accesorios.'}\r\n  },\r\n  pp:[\r\n    {id:'wt-v10k',name:'Clorador V10k',brand:'Wallace & Tiernan',cat:'cloracion',tagline:'Clorador de gas al vac\u00edo hasta 500 lb\/d\u00eda',desc:'El V10k es un clorador de gas al vac\u00edo para sistemas municipales e industriales. Operaci\u00f3n segura mediante principio de vac\u00edo negativo.',tags:['Gas cloro','Al vac\u00edo','500 lb\/d\u00eda'],specs:[['Capacidad','Hasta 500 lb\/d\u00eda'],['Tipo','Cloro, SO\u2082, amoniaco'],['Presi\u00f3n','15\u2013100 psig'],['Material','PVC, acr\u00edlico, FKM'],['Certificaci\u00f3n','NSF\/ANSI 61']],apps:['Plantas potabilizadoras','Tratamiento municipal','Industria alimentaria'],docs:['Ficha t\u00e9cnica PDF \u00b7 1.2 MB','Manual de operaci\u00f3n \u00b7 4.8 MB']},\r\n    {id:'halogen',name:'Eclipse Actuator',brand:'Halogen Valve',cat:'cloracion',tagline:'Actuador de cierre de emergencia para cilindros',desc:'Actuador electromec\u00e1nico que cierra autom\u00e1ticamente las v\u00e1lvulas de cilindros de cloro ante una fuga detectada.',tags:['Emergencia','< 5s','UFC'],specs:[['Compatibilidad','Cilindros 150 lb y 1 ton'],['Tiempo de cierre','< 5 segundos'],['Bater\u00eda','24 horas'],['Certificaci\u00f3n','Uniform Fire Code']],apps:['Plantas potabilizadoras','Albercas comerciales'],docs:['Ficha t\u00e9cnica PDF \u00b7 0.9 MB']},\r\n    {id:'sci2',name:'SCI-2 Sistema compacto',brand:'CLARVI',cat:'dosificacion',tagline:'Sistema d\u00faplex listo para instalar',desc:'Sistema de dosificaci\u00f3n autom\u00e1tico d\u00faplex con bombas, tanques, controles y tablero integrado.',tags:['D\u00faplex','PLC','Skid compacto'],specs:[['Configuraci\u00f3n','D\u00faplex activa\/respaldo'],['Control','PLC integrado'],['Se\u00f1al','4-20 mA \/ Pulso'],['Voltaje','110\/220 VAC']],apps:['Pozos municipales','Tanques elevados'],docs:['Ficha t\u00e9cnica PDF \u00b7 1.5 MB']},\r\n    {id:'bombas-wt',name:'Bombas dosificadoras',brand:'Wallace & Tiernan',cat:'dosificacion',tagline:'Membrana y pist\u00f3n para qu\u00edmicos agresivos',desc:'Bombas dosificadoras de membrana y pist\u00f3n para inyecci\u00f3n precisa de soluciones qu\u00edmicas.',tags:['Membrana','Pist\u00f3n','\u00b11%'],specs:[['Tipo','Membrana \/ Pist\u00f3n'],['Precisi\u00f3n','\u00b1 1%'],['Materiales','PVC, PVDF, Inox 316'],['Presi\u00f3n','10 bar']],apps:['Dosificaci\u00f3n de hipoclorito','Coagulantes'],docs:['Cat\u00e1logo de modelos \u00b7 3.2 MB']},\r\n    {id:'osec',name:'OSEC-L Generador hipoclorito',brand:'Wallace & Tiernan',cat:'dosificacion',tagline:'Hipoclorito de sodio en sitio, sin gas cloro',desc:'Generador electrol\u00edtico de hipoclorito de sodio en sitio. Insumos: sal y agua.',tags:['Electrol\u00edtico','0.8% NaOCl','NSF 61'],specs:[['Producci\u00f3n','Hasta 5 kg Cl\u2082\/d\u00eda'],['Concentraci\u00f3n','0.8% NaOCl'],['Certificaci\u00f3n','NSF\/ANSI 61']],apps:['Municipios remotos','Pozos rurales'],docs:['Ficha t\u00e9cnica PDF \u00b7 1.8 MB']},\r\n    {id:'lumin',name:'Lumin \u00b7 UV de baja presi\u00f3n',brand:'ETS-UV',cat:'desinfeccion-uv',tagline:'Reactor cerrado para flujos de 50\u2013500 GPM',desc:'Reactor UV de baja presi\u00f3n con c\u00e1mara en acero inoxidable 316L. Limpieza autom\u00e1tica mec\u00e1nica.',tags:['NSF 55','316L','Auto-limpieza'],specs:[['Caudal','50\u2013500 GPM'],['C\u00e1mara','Acero inoxidable 316L'],['Validaci\u00f3n','USEPA UVDGM 2006']],apps:['Agua potable municipal','Re\u00faso de agua'],docs:['Ficha t\u00e9cnica PDF \u00b7 2.1 MB']},\r\n    {id:'wchamp',name:'Water Champ',brand:'CLARVI',cat:'desinfeccion-uv',tagline:'Desinfecci\u00f3n compacta para pozos y comunidades',desc:'Equipo compacto de desinfecci\u00f3n para pozos, tanques y redes de distribuci\u00f3n.',tags:['Rural','Aut\u00f3nomo','Solar opcional'],specs:[['Operaci\u00f3n','Aut\u00f3noma'],['Energ\u00eda','El\u00e9ctrica o solar']],apps:['Comunidades rurales','Pozos de agua'],docs:['Ficha t\u00e9cnica PDF \u00b7 0.8 MB']},\r\n    {id:'lab21',name:'Generador Lab21',brand:'Pacific Ozone',cat:'ozono',tagline:'Ozono modular de hasta 21 g\/h',desc:'Sistema compacto de generaci\u00f3n de ozono por descarga corona con producci\u00f3n ajustable.',tags:['21 g\/h','Modular','Aire\/O2'],specs:[['Producci\u00f3n','Hasta 21 g\/h'],['Concentraci\u00f3n','Hasta 6%'],['Consumo','450 W']],apps:['Plantas piloto','Tratamiento terciario'],docs:['Ficha t\u00e9cnica PDF \u00b7 1.4 MB']},\r\n    {id:'bw400',name:'Membrana BW 400 R',brand:'LG Chem',cat:'filtracion',tagline:'\u00d3smosis inversa para agua salobre',desc:'Membrana de \u00f3smosis inversa de 8\" para agua salobre, alto rechazo de sales.',tags:['8\"','99.7% rechazo','NSF 58'],specs:[['Tama\u00f1o','8\" \u00d7 40\"'],['Producci\u00f3n','11,500 GPD'],['Rechazo','99.7%']],apps:['Desalinizaci\u00f3n','Re\u00faso terciario'],docs:['Hoja de datos PDF \u00b7 0.7 MB']},\r\n    {id:'filtremax',name:'FILTREMAX',brand:'CLARVI',cat:'filtracion',tagline:'Material filtrante multicapa de alta retenci\u00f3n',desc:'Mezcla granulom\u00e9trica de antracita y arena s\u00edlica para filtros a presi\u00f3n y gravedad.',tags:['NSF 61','Multicapa','Granel'],specs:[['Presentaci\u00f3n','Sacos 22.6 kg'],['Norma','NSF\/ANSI 61']],apps:['Filtraci\u00f3n municipal','Pretratamiento RO'],docs:['Ficha t\u00e9cnica PDF \u00b7 0.5 MB']},\r\n    {id:'arsetrap',name:'ARSE TRAP',brand:'CLARVI',cat:'quimicos',tagline:'Remoci\u00f3n selectiva de ars\u00e9nico en agua potable',desc:'Medio adsorbente granular para remoci\u00f3n selectiva de ars\u00e9nico. Cumple NOM-127-SSA1.',tags:['Ars\u00e9nico','NOM-127','NSF 61'],specs:[['Capacidad','Hasta 14 g As\/kg'],['pH \u00f3ptimo','6.5\u20138.0'],['Norma','NOM-127, NSF 61']],apps:['Pozos con ars\u00e9nico','Plantas rurales'],docs:['Ficha t\u00e9cnica PDF \u00b7 0.9 MB']},\r\n    {id:'depolox',name:'Depolox 5',brand:'Wallace & Tiernan',cat:'analizadores',tagline:'Analizador en l\u00ednea de cloro y pH',desc:'Medici\u00f3n continua de cloro libre, pH y temperatura. Pantalla t\u00e1ctil 7\" y Modbus RTU.',tags:['En l\u00ednea','Modbus','Multi-par\u00e1metro'],specs:[['Par\u00e1metros','Cl\u2082, ClO\u2082, O\u2083, pH, temp.'],['Rango','0\u20135 ppm'],['Salidas','4-20 mA, Modbus']],apps:['Plantas potabilizadoras','Redes de distribuci\u00f3n'],docs:['Ficha t\u00e9cnica PDF \u00b7 1.6 MB']},\r\n    {id:'watclev',name:'WAT-CLEV Control',brand:'CLARVI',cat:'analizadores',tagline:'Control autom\u00e1tico de dosificaci\u00f3n con Floculizer',desc:'Sistema CLARVI de control autom\u00e1tico de dosificaci\u00f3n con sensor FLOCULIZER.',tags:['CLARVI','Modbus','Coagulaci\u00f3n'],specs:[['Comunicaci\u00f3n','Modbus RTU, 4-20 mA'],['Voltaje','110\/220 VAC'],['Garant\u00eda','2 a\u00f1os CLARVI']],apps:['Control de coagulaci\u00f3n','Plantas potabilizadoras'],docs:['Ficha t\u00e9cnica PDF \u00b7 1.1 MB']},\r\n    {id:'axiom',name:'Axiom MX',brand:'Force Flow',cat:'bombas',tagline:'B\u00e1scula digital para tambores y cilindros',desc:'B\u00e1scula con celda de carga y display LCD para monitoreo de inventario de qu\u00edmicos.',tags:['B\u00e1scula','LCD','450 kg'],specs:[['Capacidad','1,000 lb (450 kg)'],['Resoluci\u00f3n','0.1 lb'],['Salidas','4-20 mA, alarmas']],apps:['Tambores 55 gal','Cilindros de cloro'],docs:['Ficha t\u00e9cnica PDF \u00b7 0.8 MB']}\r\n  ]\r\n};\r\nvar ccState={cat:'all',brands:new Set(),view:'grid',quote:[],sent:false};\r\n\r\nfunction ccGet(){\r\n  var l=ccData.pp.slice();\r\n  if(ccState.cat!=='all') l=l.filter(function(p){return p.cat===ccState.cat});\r\n  if(ccState.brands.size>0) l=l.filter(function(p){return ccState.brands.has(p.brand)});\r\n  var q=document.getElementById('cc-q');\r\n  if(q&&q.value.trim()){var s=q.value.toLowerCase();l=l.filter(function(p){return p.name.toLowerCase().indexOf(s)>-1||p.tagline.toLowerCase().indexOf(s)>-1});}\r\n  var sort=document.getElementById('cc-sort');\r\n  if(sort){if(sort.value==='az')l.sort(function(a,b){return a.name.localeCompare(b.name,'es')});if(sort.value==='za')l.sort(function(a,b){return b.name.localeCompare(a.name,'es')});}\r\n  return l;\r\n}\r\nfunction ccRender(){\r\n  var l=ccGet();\r\n  var rl=document.getElementById('cc-rl');if(rl)rl.textContent=l.length+' resultado'+(l.length!==1?'s':'');\r\n  var mc=document.getElementById('cc-mc');if(mc)mc.textContent=l.length;\r\n  var mb=document.getElementById('cc-mb');if(mb)mb.textContent=new Set(l.map(function(p){return p.brand})).size;\r\n  var el=document.getElementById('cc-grid');if(!el)return;\r\n  if(!l.length){el.innerHTML='<div class=\"no-res\">Sin resultados con los filtros seleccionados<\/div>';return;}\r\n  if(ccState.view==='grid'){\r\n    el.innerHTML='<div class=\"pgrid\">'+l.map(function(p,i){\r\n      return '<article class=\"pcard\" style=\"animation-delay:'+i*.04+'s\" onclick=\"ccDetail(''+p.id+'')\">'\r\n        +'<div class=\"pcard-img\"><span class=\"brand-pill\">'+p.brand.toUpperCase()+'<\/span><\/div>'\r\n        +'<div class=\"pcard-body\"><div class=\"pcard-name\">'+p.name+'<\/div><div class=\"pcard-tagline\">'+p.tagline+'<\/div>'\r\n        +'<div class=\"pcard-tags\">'+p.tags.map(function(t){return '<span class=\"tag\">'+t+'<\/span>'}).join('')+'<\/div><\/div><\/article>';\r\n    }).join('')+'<\/div>';\r\n  } else {\r\n    el.innerHTML='<div class=\"plist\">'+l.map(function(p){\r\n      return '<div class=\"prow\" onclick=\"ccDetail(''+p.id+'')\"><div class=\"prow-thumb\"><\/div>'\r\n        +'<div><div class=\"prow-name\">'+p.name+'<\/div><div class=\"prow-tag\">'+p.tagline+'<\/div><\/div>'\r\n        +'<div class=\"prow-brand\">'+p.brand+'<\/div><\/div>';\r\n    }).join('')+'<\/div>';\r\n  }\r\n}\r\nfunction ccCat(id){\r\n  ccState.cat=id;\r\n  document.querySelectorAll('#clarvi-cat-root .sb-item').forEach(function(b){b.classList.remove('active')});\r\n  var btn=document.querySelector('[onclick=\"ccCat(''+id+'')\"]');\r\n  if(btn)btn.classList.add('active');\r\n  var catData=ccData.cats[id]||ccData.cats['all'];\r\n  var ey=document.getElementById('cc-eyebrow');if(ey)ey.textContent=id==='all'?'Todo el cat\u00e1logo':'Categor\u00eda';\r\n  var ht=document.getElementById('cc-hero-t');if(ht)ht.textContent=catData.label;\r\n  var hl=document.getElementById('cc-hero-lead');if(hl)hl.textContent=catData.lead;\r\n  ccRender();\r\n}\r\nfunction ccBrand(b,checked){if(checked)ccState.brands.add(b);else ccState.brands.delete(b);ccRender();}\r\nfunction ccClear(){\r\n  ccState.cat='all';ccState.brands=new Set();\r\n  document.querySelectorAll('#clarvi-cat-root .sb-item').forEach(function(b){b.classList.remove('active')});\r\n  var allBtn=document.querySelector('[onclick=\"ccCat('all')\"]');if(allBtn)allBtn.classList.add('active');\r\n  document.querySelectorAll('#clarvi-cat-root .sb-check input').forEach(function(i){i.checked=false});\r\n  var q=document.getElementById('cc-q');if(q)q.value='';\r\n  var ey=document.getElementById('cc-eyebrow');if(ey)ey.textContent='Todo el cat\u00e1logo';\r\n  var ht=document.getElementById('cc-hero-t');if(ht)ht.textContent='Cat\u00e1logo completo';\r\n  var hl=document.getElementById('cc-hero-lead');if(hl)hl.textContent='Todos los equipos, qu\u00edmicos y materiales filtrantes en distribuci\u00f3n por CLARVI.';\r\n  ccRender();\r\n}\r\nfunction ccView(v){\r\n  ccState.view=v;\r\n  document.getElementById('cc-vg').className='vbtn'+(v==='grid'?' active':'');\r\n  document.getElementById('cc-vl').className='vbtn'+(v==='list'?' active':'');\r\n  ccRender();\r\n}\r\nfunction ccShowCat(){\r\n  document.getElementById('ccv-catalog').style.display='';\r\n  document.getElementById('ccv-detail').style.display='none';\r\n  window.scrollTo(0,0);\r\n}\r\nfunction ccDetail(id){\r\n  var p=ccData.pp.find(function(x){return x.id===id});if(!p)return;\r\n  var cname=(ccData.cats[p.cat]||{name:p.cat}).name;\r\n  document.getElementById('cc-dcrumbs').innerHTML=\r\n    '<button class=\"crumb\" onclick=\"ccShowCat()\">Productos<\/button><span style=\"opacity:.4\"> \/ <\/span>'\r\n    +'<button class=\"crumb\" onclick=\"ccCat(''+p.cat+'');ccShowCat()\">'+cname+'<\/button><span style=\"opacity:.4\"> \/ <\/span>'\r\n    +'<span style=\"color:#0E1422;font-weight:700\">'+p.name+'<\/span>';\r\n  document.getElementById('cc-dbrand').textContent=p.brand;\r\n  document.getElementById('cc-dcatlink').textContent=cname;\r\n  document.getElementById('cc-dcatlink').onclick=function(){ccCat(p.cat);ccShowCat();};\r\n  document.getElementById('cc-dname').textContent=p.name;\r\n  document.getElementById('cc-dlead').textContent=p.tagline;\r\n  document.getElementById('cc-ddesc').textContent=p.desc;\r\n  document.getElementById('cc-dlbl').textContent=p.name.toLowerCase().replace(\/[^a-z0-9]\/g,'_')+'.jpg';\r\n  document.getElementById('cc-dtags').innerHTML=p.tags.map(function(t){return '<span class=\"dtag\">'+t+'<\/span>'}).join('');\r\n  document.getElementById('cc-dquote').onclick=function(){ccAddQ(p.id);};\r\n  document.getElementById('cc-dficha').onclick=function(){alert('Ficha t\u00e9cnica de '+p.name+' disponible pr\u00f3ximamente. Contacta a CLARVI para solicitarla.');};\r\n  document.getElementById('cc-tspecs').innerHTML=p.specs.map(function(s){return '<div class=\"spec-row\"><span class=\"spec-k\">'+s[0]+'<\/span><span class=\"spec-v\">'+s[1]+'<\/span><\/div>'}).join('');\r\n  document.getElementById('cc-tapps').innerHTML='<div class=\"app-chips\">'+p.apps.map(function(a){return '<span class=\"app-chip\">'+a+'<\/span>'}).join('')+'<\/div>';\r\n  document.getElementById('cc-tdocs').innerHTML=p.docs.map(function(d){return '<div class=\"doc-item\"><div><div class=\"doc-name\">'+d.split('\u00b7')[0].trim()+'<\/div><div class=\"doc-meta\">'+d+'<\/div><\/div><span>&#8595;<\/span><\/div>'}).join('');\r\n  var rel=ccData.pp.filter(function(x){return x.cat===p.cat&&x.id!==p.id}).slice(0,3);\r\n  if(rel.length<3){var ex=ccData.pp.filter(function(x){return x.id!==p.id&&!rel.find(function(r){return r.id===x.id})}).slice(0,3-rel.length);rel=rel.concat(ex);}\r\n  document.getElementById('cc-related').innerHTML=rel.map(function(r){return '<div class=\"rcard\" onclick=\"ccDetail(''+r.id+'')\"><div class=\"rcard-img\"><\/div><div class=\"rcard-body\"><div class=\"rcard-name\">'+r.name+'<\/div><div class=\"rcard-brand\">'+r.brand+'<\/div><\/div><\/div>'}).join('');\r\n  ['specs','apps','docs'].forEach(function(t,i){\r\n    document.getElementById('cc-t'+t).className='tab-panel'+(t==='specs'?' active':'');\r\n    document.querySelectorAll('#clarvi-cat-root .tab-btn')[i].className='tab-btn'+(t==='specs'?' active':'');\r\n  });\r\n  document.getElementById('ccv-catalog').style.display='none';\r\n  document.getElementById('ccv-detail').style.display='';\r\n  window.scrollTo(0,0);\r\n}\r\nfunction ccTab(t){\r\n  ['specs','apps','docs'].forEach(function(tab,i){\r\n    document.getElementById('cc-t'+tab).className='tab-panel'+(tab===t?' active':'');\r\n    document.querySelectorAll('#clarvi-cat-root .tab-btn')[i].className='tab-btn'+(tab===t?' active':'');\r\n  });\r\n}\r\nfunction ccAddQ(id){\r\n  var ex=ccState.quote.find(function(i){return i.id===id});\r\n  if(ex)ex.qty++;else ccState.quote.push({id:id,qty:1});\r\n  ccOpenD();\r\n}\r\nfunction ccRmQ(id){ccState.quote=ccState.quote.filter(function(i){return i.id!==id});ccRenderD();}\r\nfunction ccQty(id,q){var it=ccState.quote.find(function(i){return i.id===id});if(it)it.qty=Math.max(1,q);ccRenderD();}\r\nfunction ccOpenD(){document.getElementById('clarvi-drawer').classList.add('open');document.getElementById('clarvi-scrim').classList.add('open');ccRenderD();}\r\nfunction ccCloseD(){document.getElementById('clarvi-drawer').classList.remove('open');document.getElementById('clarvi-scrim').classList.remove('open');}\r\nfunction ccRenderD(){\r\n  var db=document.getElementById('cc-db'),df=document.getElementById('cc-df');\r\n  var dt=document.getElementById('cc-dtitle');\r\n  if(dt)dt.textContent='Cotizaci\u00f3n \u00b7 '+ccState.quote.length+' producto'+(ccState.quote.length!==1?'s':'');\r\n  if(ccState.sent){\r\n    db.innerHTML='<div style=\"text-align:center;padding:60px 20px\"><div style=\"width:52px;height:52px;border-radius:999px;background:#E6F5FC;color:#1690C2;margin:0 auto 14px;display:flex;align-items:center;justify-content:center;font-size:22px\">&#10003;<\/div><h3 style=\"font-size:18px;font-weight:800;margin-bottom:8px;color:#0E1422\">\u00a1Solicitud enviada!<\/h3><p style=\"color:#5F6675;font-size:14px\">Un asesor CLARVI te contactar\u00e1 en menos de 24 horas h\u00e1biles.<\/p><\/div>';\r\n    df.innerHTML='';return;\r\n  }\r\n  if(!ccState.quote.length){\r\n    db.innerHTML='<div style=\"text-align:center;padding:60px 20px;color:#5F6675\"><div style=\"font-size:40px;opacity:.2;margin-bottom:14px\">&#128722;<\/div><h4 style=\"font-size:15px;font-weight:700;color:#0E1422;margin-bottom:6px\">Tu cotizaci\u00f3n est\u00e1 vac\u00eda<\/h4><p style=\"font-size:13px\">Agrega productos del cat\u00e1logo.<\/p><\/div>';\r\n    df.innerHTML='';return;\r\n  }\r\n  var items=ccState.quote.map(function(i){return Object.assign({},i,{p:ccData.pp.find(function(x){return x.id===i.id})})}).filter(function(i){return i.p});\r\n  db.innerHTML='<div>'+items.map(function(it){\r\n    return '<div class=\"qi\"><div class=\"qi-thumb\"><\/div><div><div class=\"qi-name\">'+it.p.name+'<\/div><div class=\"qi-brand\">'+it.p.brand+'<\/div><button class=\"qi-rm\" onclick=\"ccRmQ(''+it.id+'')\">Quitar<\/button><\/div>'\r\n      +'<div class=\"qty\"><button class=\"qb\" onclick=\"ccQty(''+it.id+'','+(it.qty-1)+')\">\u2212<\/button><span class=\"qn\">'+it.qty+'<\/span><button class=\"qb\" onclick=\"ccQty(''+it.id+'','+(it.qty+1)+')\">+<\/button><\/div><\/div>';\r\n  }).join('')+'<\/div>'\r\n  +'<div style=\"font-size:10px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#8A8F9C;margin:20px 0 12px\">Tus datos<\/div>'\r\n  +'<div class=\"field\"><label>Nombre completo *<\/label><input id=\"cc-fn\" placeholder=\"Nombre y apellido\"><\/div>'\r\n  +'<div class=\"field\"><label>Empresa *<\/label><input id=\"cc-fe\" placeholder=\"Nombre de la empresa\"><\/div>'\r\n  +'<div class=\"field-2\"><div class=\"field\"><label>Email *<\/label><input id=\"cc-fm\" type=\"email\" placeholder=\"correo@empresa.com\"><\/div>'\r\n  +'<div class=\"field\"><label>Tel\u00e9fono<\/label><input id=\"cc-ft\" placeholder=\"+52 668\u2026\"><\/div><\/div>'\r\n  +'<div class=\"field\"><label>Mensaje<\/label><textarea id=\"cc-fmsg\" placeholder=\"Aplicaci\u00f3n, capacidad, fecha\u2026\"><\/textarea><\/div>';\r\n  df.innerHTML='<button class=\"sub-btn\" onclick=\"ccSubmit()\">Enviar solicitud de cotizaci\u00f3n<\/button><div class=\"note\">Respuesta en menos de 24h \u00b7 Sin compromiso<\/div>';\r\n}\r\nfunction ccSubmit(){\r\n  var fn=document.getElementById('cc-fn'),fe=document.getElementById('cc-fe'),fm=document.getElementById('cc-fm');\r\n  if(!fn||!fn.value.trim()||!fe||!fe.value.trim()||!fm||!fm.value.trim()){alert('Por favor completa los campos obligatorios (*)');return;}\r\n  ccState.sent=true;ccRenderD();setTimeout(function(){ccState.sent=false;ccState.quote=[];if(document.getElementById('cc-dtitle'))document.getElementById('cc-dtitle').textContent='Cotizaci\u00f3n';},4000);\r\n}\r\n\/\/ Aggressive retry - WordPress can inject content very late\r\nvar ccRetries=0;\r\nfunction ccInit(){\r\n  var el=document.getElementById('cc-grid');\r\n  if(el&&el.innerHTML===''){\r\n    ccRender();\r\n    \/\/ Double check after 300ms in case WordPress overwrote it\r\n    setTimeout(function(){\r\n      var el2=document.getElementById('cc-grid');\r\n      if(el2&&el2.innerHTML==='') ccRender();\r\n    },300);\r\n  } else if(!el&&ccRetries<30){\r\n    ccRetries++;\r\n    setTimeout(ccInit,200);\r\n  }\r\n}\r\n\/\/ Try all possible entry points\r\nif(document.readyState==='loading'){\r\n  document.addEventListener('DOMContentLoaded',function(){setTimeout(ccInit,50);});\r\n} else {\r\n  setTimeout(ccInit,50);\r\n}\r\nwindow.addEventListener('load',function(){\r\n  var el=document.getElementById('cc-grid');\r\n  if(el&&el.innerHTML==='') ccRender();\r\n});\r\n<\/script>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-9369","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/clarvi.com\/en\/wp-json\/wp\/v2\/pages\/9369","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/clarvi.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/clarvi.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/clarvi.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/clarvi.com\/en\/wp-json\/wp\/v2\/comments?post=9369"}],"version-history":[{"count":1,"href":"https:\/\/clarvi.com\/en\/wp-json\/wp\/v2\/pages\/9369\/revisions"}],"predecessor-version":[{"id":10546,"href":"https:\/\/clarvi.com\/en\/wp-json\/wp\/v2\/pages\/9369\/revisions\/10546"}],"wp:attachment":[{"href":"https:\/\/clarvi.com\/en\/wp-json\/wp\/v2\/media?parent=9369"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}