Lity Cable Comparison
:root {
--bg: #f5f5f7; --white: #fff; --text-primary: #1d1d1f; --text-secondary: #6e6e73;
--accent: #e30613; --border: #d2d2d7; --row-alt: #f9f9fb;
--shadow: 0 4px 24px rgba(0,0,0,0.08); --radius: 18px;
--font: -apple-system,'SF Pro Display','Segoe UI',sans-serif;
--rh-header: 155px; --rh-std: 50px; --rh-btn: 96px;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
body { font-family: var(--font); background: var(--bg); color: var(--text-primary); -webkit-font-smoothing: antialiased; }
.evp-section { max-width: 1100px; margin: 0 auto; padding: 40px 24px 60px; }
/* ── DESKTOP ── */
.dc-outer { display: block; }
.dc-card { display: flex; background: var(--white); border-radius: var(--radius); box-shadow: var(--shadow); overflow: hidden; }
.dc-labels { flex: 0 0 190px; width: 190px; border-right: 1.5px solid var(--border); background: var(--white); }
.dc-lrow { display: flex; align-items: center; padding: 0 12px 0 18px; font-weight: 600; font-size: 13px; line-height: 1.3; }
.rh-header { height: var(--rh-header); } .rh-std { height: var(--rh-std); } .rh-btn { height: var(--rh-btn); }
.dc-lrow.alt, .dc-pcell.alt { background: var(--row-alt); }
.dc-clip { flex: 1; overflow: hidden; min-width: 0; }
/* Track = 9 cols wide, clip shows 4 at a time → track = 9/4 = 225% of clip */
.dc-track { display: flex; width: calc(9 * 100% / 4); transition: transform .45s cubic-bezier(.4,0,.2,1); will-change: transform; }
/* Each col = 1/9 of track = 1/9 × 225% of clip = 25% of clip */
.dc-col { flex: 0 0 calc(100% / 9); min-width: 0; }
.dc-pcell { display: flex; align-items: center; justify-content: center; text-align: center; padding: 0 8px; font-size: 13px; line-height: 1.4; }
.dc-pcell.rh-header { flex-direction: column; padding-top: 16px; padding-bottom: 12px; justify-content: flex-start; }
.dc-pcell.rh-btn { flex-direction: column; gap: 8px; }
.prod-img { width: 90px; height: 90px; margin: 0 auto 8px; display: flex; align-items: center; justify-content: center; overflow: hidden; background: linear-gradient(135deg,#e8e8ed,#d2d2d7); border-radius: 10px; flex-shrink: 0; }
.prod-img img { width: 100%; height: 100%; object-fit: contain; }
.prod-img svg { opacity: .3; }
.prod-badge { display: inline-block; background: var(--accent); color: #fff; font-size: 11px; font-weight: 700; padding: 3px 10px; border-radius: 8px; flex-shrink: 0; }
.tag-sim { display: inline-block; background: #e6f4ea; color: #1a7a35; font-size: 11px; font-weight: 600; padding: 2px 10px; border-radius: 20px; }
.tag-nao { display: inline-block; background: #f5f5f7; color: var(--text-secondary); font-size: 11px; font-weight: 500; padding: 2px 10px; border-radius: 20px; }
.tag-info { display: inline-block; background: #e8f0fe; color: #1a56b0; font-size: 11px; font-weight: 600; padding: 2px 10px; border-radius: 20px; }
.evp-btn-comprar { display: inline-flex; align-items: center; justify-content: center; background-color: var(--accent); color: #fff !important; font-size: 12px; font-weight: 600; padding: 8px 16px; border-radius: 980px; text-decoration: none; white-space: nowrap; width: 100%; max-width: 130px; }
.evp-btn-comprar:hover { background-color: #b30000; }
.evp-btn-saiba { display: inline-flex; align-items: center; gap: 4px; background: transparent; color: var(--accent) !important; font-size: 12px; font-weight: 600; text-decoration: none; }
.evp-btn-saiba svg { width: 7px; height: 7px; fill: var(--accent); }
.dc-nav { display: flex; align-items: center; justify-content: center; gap: 16px; margin-top: 20px; }
.dc-dots { display: flex; gap: 8px; }
.d-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--border); cursor: pointer; transition: background .2s, transform .2s; }
.d-dot.active { background: var(--accent); transform: scale(1.35); }
.d-nav-btn { width: 38px !important; height: 38px !important; border-radius: 50% !important; border: 1.5px solid var(--border) !important; background: var(--white) !important; cursor: pointer !important; display: flex !important; align-items: center !important; justify-content: center !important; box-shadow: var(--shadow) !important; padding: 0 !important; outline: none !important; flex-shrink: 0 !important; }
.d-nav-btn.disabled { opacity: .3 !important; pointer-events: none !important; }
.d-nav-btn svg { display: block !important; }
/* ── MOBILE ── */
.mobile-carousel { display: none; }
@media (max-width: 767px) {
.dc-outer { display: none; }
.mobile-carousel { display: block; }
.evp-carousel__track-outer { overflow: hidden; }
.evp-carousel__track { display: flex; transition: transform .4s cubic-bezier(.4,0,.2,1); }
.evp-card { min-width: 100%; background: var(--white); border-radius: var(--radius); box-shadow: var(--shadow); overflow: hidden; padding: 22px 18px 26px; }
.evp-card__badge { display: inline-block; background: var(--accent); color: #fff; font-size: 13px; font-weight: 700; padding: 5px 16px; border-radius: 8px; margin-bottom: 14px; }
.evp-card__img { width: 130px; height: 130px; background: linear-gradient(135deg,#e8e8ed,#d2d2d7); border-radius: 14px; margin: 0 auto 18px; display: flex; align-items: center; justify-content: center; overflow: hidden; }
.evp-card__img img { width: 100%; height: 100%; object-fit: contain; }
.evp-card__img svg { opacity: .3; }
.evp-card__specs { width: 100%; border-collapse: collapse; }
.evp-card__specs td { border: none !important; padding: 10px 6px; font-size: 14px; vertical-align: middle; }
.evp-card__specs tr:nth-child(even) { background: var(--row-alt); }
.evp-card__specs td:first-child { font-weight: 500; color: var(--text-secondary); font-size: 11px; text-transform: uppercase; letter-spacing: .05em; width: 40%; }
.evp-card__specs td:last-child { text-align: left; font-weight: 500; }
.evp-card__btns { display: flex; flex-direction: column; align-items: center; gap: 10px; margin-top: 18px; }
.evp-card__btns .evp-btn-comprar { width: 100%; max-width: 100%; font-size: 13px; padding: 9px 20px; }
.evp-card__btns .evp-btn-saiba { font-size: 13px; }
.evp-card__btns .evp-btn-saiba svg { width: 8px; height: 8px; }
.m-dots { display: flex; justify-content: center; gap: 8px; margin-top: 18px; flex-wrap: wrap; }
.m-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--border); cursor: pointer; transition: background .2s, transform .2s; }
.m-dot.active { background: var(--accent); transform: scale(1.3); }
.m-nav { display: flex; justify-content: center; gap: 12px; margin-top: 12px; }
.m-nav-btn { width: 40px !important; height: 40px !important; border-radius: 50% !important; border: 1.5px solid var(--border) !important; background: var(--white) !important; cursor: pointer !important; display: flex !important; align-items: center !important; justify-content: center !important; padding: 0 !important; outline: none !important; }
.m-nav-btn.disabled { opacity: .3 !important; pointer-events: none !important; }
}
Connection
Length
Max. Power
Max. Current
Material
Data function
MFi Certified
USB-A → USB-C
2 m
60 W
3 A
Braided nylon
Yes
No
USB-C → USB-C
2 m
60 W
3 A
Braided nylon
Yes
No
USB-C → USB-C
2 m
100 W
5 A
Braided nylon
Yes
No
USB-A → Micro USB
1.5 m
—
—
Braided nylon
Yes
No
USB-A → USB-C
1.5 m
—
—
Braided nylon
Yes
No
USB-C → USB-C
1.5 m
—
—
Braided nylon
Yes
No
USB-C → Lightning
1.5 m
—
—
Braided nylon
Yes
MFI
USB-A → Lightning
1.5 m
—
—
Braided nylon
Yes
MFI
USB-A → Micro+C+Lightning
1.5 m
—
—
Braided nylon
Yes
MFI
| Connection | USB-A → USB-C |
| Length | 2 m |
| Power | 60 W / 3A |
| Material | Braided nylon |
| Data | Yes |
| MFi Certified | No |
| Connection | USB-C → USB-C |
| Length | 2 m |
| Power | 60 W / 3A |
| Material | Braided nylon |
| Data | Yes |
| MFi Certified | No |
| Connection | USB-C → USB-C |
| Length | 2 m |
| Power | 100 W / 5A |
| Material | Braided nylon |
| Data | Yes |
| MFi Certified | No |
| Connection | USB-A → Micro USB |
| Length | 1.5 m |
| Power | — |
| Material | Braided nylon |
| Data | Yes |
| MFi Certified | No |
| Connection | USB-A → USB-C |
| Length | 1.5 m |
| Power | — |
| Material | Braided nylon |
| Data | Yes |
| MFi Certified | No |
| Connection | USB-C → USB-C |
| Length | 1.5 m |
| Power | — |
| Material | Braided nylon |
| Data | Yes |
| MFi Certified | No |
| Connection | USB-C → Lightning |
| Length | 1.5 m |
| Power | — |
| Material | Braided nylon |
| Data | Yes |
| MFi Certified | MFI |
| Connection | USB-A → Lightning |
| Length | 1.5 m |
| Power | — |
| Material | Braided nylon |
| Data | Yes |
| MFi Certified | MFI |
| Connection | USB-A → Micro+C+Lightning |
| Length | 1.5 m |
| Power | — |
| Material | Braided nylon |
| Data | Yes |
| MFi Certified | MFI |
// Desktop carousel — CSS defines column widths, JS only handles translation
(function(){
const clip=document.getElementById('dcClip'),track=document.getElementById('dcTrack');
const dots=Array.from(document.querySelectorAll('.d-dot'));
const prev=document.getElementById('dPrev'),next=document.getElementById('dNext');
const PAGES=3; // ceil(9 cols / 4 per page)
let page=0;
function goTo(i){
page=Math.max(0,Math.min(i,PAGES-1));
// Translate by one full clip-width per page (each page = 4 cols = clip width)
track.style.transform=`translateX(-${page*clip.offsetWidth}px)`;
dots.forEach((d,j)=>d.classList.toggle('active',j===page));
prev.classList.toggle('disabled',page===0);
next.classList.toggle('disabled',page===PAGES-1);
}
prev.addEventListener('click',()=>{if(!prev.classList.contains('disabled'))goTo(page-1);});
next.addEventListener('click',()=>{if(!next.classList.contains('disabled'))goTo(page+1);});
dots.forEach(d=>d.addEventListener('click',()=>goTo(+d.dataset.idx)));
// Re-apply translate on resize so position stays correct after layout changes
window.addEventListener('resize',()=>goTo(page));
})();
// Mobile carousel
(function(){
const track=document.getElementById('mTrack'),dots=document.querySelectorAll('.m-dot');
const prev=document.getElementById('mPrev'),next=document.getElementById('mNext');
let c=0;const t=9;
function g(i){c=i;track.style.transform=`translateX(-${i*100}%)`;dots.forEach((d,j)=>d.classList.toggle('active',j===i));prev.classList.toggle('disabled',i===0);next.classList.toggle('disabled',i===t-1);}
prev.addEventListener('click',()=>{if(!prev.classList.contains('disabled'))g(c-1);});
next.addEventListener('click',()=>{if(!next.classList.contains('disabled'))g(c+1);});
dots.forEach(d=>d.addEventListener('click',()=>g(+d.dataset.idx)));
let sx=0;track.addEventListener('touchstart',e=>{sx=e.touches[0].clientX;},{passive:true});
track.addEventListener('touchend',e=>{const d=sx-e.changedTouches[0].clientX;if(Math.abs(d)>40)g(d>0?Math.min(c+1,t-1):Math.max(c-1,0));});
})();