﻿
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
:root{
  --teal:#a8a5a0;--teal-d:#54524f;--teal-l:#f9f5ed;--teal-m:rgba(168,165,160,.1);
  --white:#fff;--off:#ffffff;--g100:#f3f3f1;--g200:#e8e8e6;--g400:#aaa;--g600:#666;--g800:#2e2e2e;--black:#141414;
  --green:#27ae60;--orange:#e67e22;--border:#e5e5e3;
  --shadow:0 2px 12px rgba(0,0,0,.07);--shadow-md:0 6px 28px rgba(0,0,0,.1);
}
html{scroll-behavior:smooth}
body{font-family:'Barlow',sans-serif;color:var(--black);overflow-x:hidden;-webkit-font-smoothing:antialiased;line-height:1.6}
img{display:block;max-width:100%}
a{text-decoration:none;color:inherit}
button{cursor:pointer;font-family:'Barlow',sans-serif}
h1,h2,h3,h4{font-family:'Barlow',sans-serif;font-weight:400;line-height:1.15;letter-spacing:-.01em}

.announce{background:var(--black);overflow:hidden;height:34px;display:flex;align-items:center}
.announce-track{display:flex;align-items:center;animation:marquee 30s linear infinite;white-space:nowrap;flex-shrink:0}
/* announce always moving */
@keyframes marquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.ann-item{font-size:0.6875rem;letter-spacing:.18em;text-transform:uppercase;color:rgba(255,255,255,.72);font-weight:300;display:inline-flex;align-items:center;gap:.6rem;padding:0 2.2rem;white-space:nowrap;flex-shrink:0}
.ann-dot{width:4px;height:4px;border-radius:50%;background:var(--teal);flex-shrink:0}

.site-header{position:sticky;top:0;z-index:500;background:var(--black);border-bottom:1px solid rgba(255,255,255,.08);box-shadow:0 2px 14px rgba(0,0,0,.4)}
.header-inner{max-width:1380px;margin:0 auto;padding:0 1.5rem;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;height:66px;gap:1rem}
.header-logo{display:flex;justify-content:center;align-items:center}
.header-logo img{height:64px;cursor:pointer}
.header-left-zone{display:flex;align-items:center;gap:1.2rem}
.header-right{display:flex;align-items:center;justify-content:flex-end;gap:.3rem}
.header-nav{display:flex;align-items:center;gap:0}
.hnav-link{font-size:.74rem;font-weight:500;color:rgba(255,255,255,.72);letter-spacing:.03em;padding:.4rem .85rem;white-space:nowrap;transition:color .2s;display:inline-flex;align-items:center;gap:.38rem;border-bottom:2px solid transparent;height:66px}
.hnav-link:hover{color:var(--teal);border-bottom-color:var(--teal)}
.pe-link{color:var(--green) !important;font-weight:600}
.pe-link:hover{color:var(--green) !important;border-bottom-color:var(--green) !important}
.pe-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--green);flex-shrink:0}
.enc-link{color:var(--teal) !important}
.enc-link:hover{color:var(--teal-d) !important}
.nav-sep{width:3px;height:3px;border-radius:50%;background:var(--border);margin:0 .1rem;flex-shrink:0}

.hbtn{width:38px;height:38px;background:none;border:none;display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,.82);border-radius:4px;transition:all .2s;position:relative;flex-shrink:0}
.hbtn:hover{color:var(--teal);background:rgba(255,255,255,.1)}


.cart-dot{position:absolute;top:5px;right:5px;background:var(--teal);color:#fff;width:16px;height:16px;border-radius:50%;font-size:0.6875rem;font-weight:700;display:none;align-items:center;justify-content:center;border:2px solid var(--white)}
.cart-dot.on{display:flex}

.mob-btn{display:none;width:36px;height:36px;background:none;border:none;flex-direction:column;justify-content:center;align-items:center;gap:5px;cursor:pointer;color:rgba(255,255,255,.85);flex-shrink:0}
.mob-btn span{display:block;width:20px;height:1.5px;background:currentColor;transition:all .25s}
.mob-btn.open span:nth-child(1){transform:rotate(45deg) translate(4.5px,4.5px)}
.mob-btn.open span:nth-child(2){opacity:0}
.mob-btn.open span:nth-child(3){transform:rotate(-45deg) translate(4.5px,-4.5px)}
.mob-nav{position:fixed;inset:0;background:var(--white);z-index:450;transform:translateX(100%);transition:transform .32s cubic-bezier(.4,0,.2,1);padding:5rem 2rem 3rem;overflow-y:auto;border-left:3px solid var(--teal)}
.mob-nav.open{transform:translateX(0)}
.mob-nav-sec{font-size:0.6875rem;font-weight:700;letter-spacing:.28em;text-transform:uppercase;color:var(--g400);margin-bottom:.6rem;margin-top:1.8rem}
.mob-nav-sec:first-child{margin-top:0}
.mob-nav a{display:block;font-size:1.05rem;font-family:'Barlow',sans-serif;color:var(--g800);padding:.7rem 0;border-bottom:1px solid var(--border);transition:color .18s;letter-spacing:.02em}
.mob-nav a:hover{color:var(--teal)}
.mob-nav a.pe{color:var(--green);font-weight:500}

.search-overlay{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:600;display:none;align-items:flex-start;justify-content:center;padding-top:80px;backdrop-filter:blur(4px)}
.search-overlay.open{display:flex}
.search-box{background:var(--white);width:100%;max-width:620px;margin:0 1rem}
.search-top{display:flex;align-items:center;gap:.9rem;padding:1rem 1.3rem;border-bottom:1px solid var(--border)}
.search-top input{flex:1;border:none;outline:none;font-family:'Barlow',sans-serif;font-size:.95rem;color:var(--black);background:none}
.search-top input::placeholder{color:var(--g400)}
.search-close{background:none;border:none;color:var(--g400);font-size:1.3rem;line-height:1;cursor:pointer}
.search-hint{padding:.65rem 1.3rem;font-size:0.6875rem;color:var(--g400);letter-spacing:.06em}

.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.52);z-index:600;display:none;align-items:center;justify-content:center;backdrop-filter:blur(4px);padding:1rem}
.modal-overlay.open{display:flex}
.modal-box{background:var(--white);width:100%;max-width:440px;max-height:90vh;overflow-y:auto;position:relative}
.modal-header{padding:1.8rem 1.8rem 1rem;border-bottom:1px solid var(--border)}
.modal-header h2{font-size:1.5rem;margin-bottom:.25rem}
.modal-header p{font-size:.76rem;color:var(--g600);font-weight:300}
.modal-x{position:absolute;top:1rem;right:1.3rem;background:none;border:none;font-size:1.3rem;color:var(--g400);cursor:pointer}
.modal-body{padding:1.3rem 1.8rem 1.8rem}
.modal-tabs{display:flex;border-bottom:1px solid var(--border);margin-bottom:1.3rem}
.modal-tab{flex:1;padding:.7rem;background:none;border:none;font-family:'Barlow',sans-serif;font-size:.78rem;font-weight:500;color:var(--g600);border-bottom:2px solid transparent;margin-bottom:-1px;transition:all .18s;cursor:pointer}
.modal-tab.on{color:var(--teal);border-bottom-color:var(--teal)}
.modal-form{display:none}
.modal-form.on{display:block}
.form-group{margin-bottom:.9rem}
.form-label{display:block;font-size:0.6875rem;font-weight:600;letter-spacing:.08em;color:var(--g800);margin-bottom:.35rem}
.form-input{width:100%;padding:.68rem .9rem;border:1.5px solid var(--border);font-family:'Barlow',sans-serif;font-size:.8rem;color:var(--black);outline:none;transition:border-color .18s;background:var(--white)}
.form-input:focus{border-color:var(--teal)}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:.7rem}
.btn-form{width:100%;background:var(--teal);color:#fff;border:none;padding:.78rem;font-family:'Barlow',sans-serif;font-size:.8rem;font-weight:600;letter-spacing:.05em;transition:background .18s;margin-top:.4rem;cursor:pointer}
.btn-form:hover{background:var(--teal-d)}
.form-div{text-align:center;font-size:.72rem;color:var(--g400);margin:.9rem 0;position:relative}
.form-div::before{content:'';position:absolute;top:50%;left:0;right:0;height:1px;background:var(--border)}
.form-div span{background:var(--white);padding:0 .7rem;position:relative}

.cart-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:700;opacity:0;pointer-events:none;transition:opacity .3s;backdrop-filter:blur(3px)}
.cart-overlay.on{opacity:1;pointer-events:all}
.cart-drawer{position:fixed;top:0;right:0;bottom:0;width:400px;max-width:100vw;background:var(--white);z-index:701;transform:translateX(100%);transition:transform .32s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column;box-shadow:-4px 0 36px rgba(0,0,0,.12)}
.cart-drawer.on{transform:translateX(0)}
.cart-head{padding:1.3rem 1.4rem 1.1rem;border-bottom:1px solid var(--border);display:flex;align-items:flex-start;justify-content:space-between}
.cart-head h2{font-size:1.2rem;margin-bottom:.12rem}
.cart-head-sub{font-size:0.6875rem;color:var(--g600);font-weight:300}
.cart-x{background:none;border:none;font-size:1.4rem;color:var(--g400);cursor:pointer;transition:color .2s;padding:.2rem}
.cart-x:hover{color:var(--black)}
.cart-body{flex:1;overflow-y:auto;padding:1.1rem 1.4rem}
.cart-body::-webkit-scrollbar{width:3px}
.cart-body::-webkit-scrollbar-thumb{background:var(--border)}
.cart-empty-msg{text-align:center;padding:3.5rem 1rem;color:var(--g400)}
.cart-empty-icon{font-size:2.5rem;opacity:.22;margin-bottom:.7rem;text-align:center;font-family:'Barlow',sans-serif}
.cart-empty-msg p{font-size:.72rem;letter-spacing:.1em}
.cart-item{display:grid;grid-template-columns:62px 1fr auto;gap:.85rem;align-items:start;padding:.85rem 0;border-bottom:1px solid var(--border);animation:itemIn .2s ease}
@keyframes itemIn{from{opacity:0;transform:translateX(8px)}to{opacity:1;transform:none}}
.cart-img{width:62px;height:62px;background:var(--g100);object-fit:contain;padding:.3rem}
.ci-name{font-size:.72rem;font-weight:500;color:var(--black);line-height:1.4;margin-bottom:.2rem}
.ci-price{font-size:.8rem;font-weight:700;color:var(--teal-d);margin-bottom:.35rem}
.qty-row{display:flex;align-items:center;gap:.38rem}
.q-btn{width:22px;height:22px;background:var(--g100);border:none;font-size:.82rem;display:flex;align-items:center;justify-content:center;transition:all .15s;cursor:pointer}
.q-btn:hover{background:var(--teal);color:#fff}
.q-num{font-size:.72rem;font-weight:700;min-width:16px;text-align:center}
.ci-del{background:none;border:none;color:var(--g400);font-size:1rem;cursor:pointer;transition:color .2s;padding:.18rem}
.ci-del:hover{color:#c0392b}
.cart-foot{padding:1.1rem 1.4rem 1.6rem;border-top:1px solid var(--border)}
.cart-sum-row{display:flex;justify-content:space-between;font-size:0.6875rem;color:var(--g600);margin-bottom:.32rem}
.cart-sum-row.total{font-size:.78rem;font-weight:700;color:var(--black);margin:.7rem 0 1.1rem}
.cart-sum-row.total span:last-child{color:var(--teal);font-family:'Barlow',sans-serif;font-size:1.2rem}
.btn-wa-checkout{width:100%;background:#25D366;color:#141414;border:none;padding:.9rem;font-family:'Barlow',sans-serif;font-size:.76rem;font-weight:700;letter-spacing:.06em;display:flex;align-items:center;justify-content:center;gap:.55rem;transition:all .2s;margin-bottom:.6rem;cursor:pointer}
.btn-wa-checkout:hover{background:#1db954;transform:translateY(-1px)}
.cart-note{font-size:0.6875rem;color:var(--g400);text-align:center;line-height:1.6;font-weight:300}

.lbox{position:fixed;inset:0;background:rgba(0,0,0,.92);z-index:1000;display:none;align-items:center;justify-content:center;padding:1.5rem}
.lbox.on{display:flex}
.lbox-wrap{position:relative;max-width:min(90vw,520px);text-align:center}
.lbox-wrap img{width:100%;max-height:74vh;object-fit:contain}
.lbox-x{position:absolute;top:-.8rem;right:-.8rem;background:#fff;border:none;width:28px;height:28px;border-radius:50%;font-size:.88rem;display:flex;align-items:center;justify-content:center;cursor:pointer}
.lbox-name{color:rgba(255,255,255,.45);font-size:0.6875rem;letter-spacing:.2em;text-transform:uppercase;margin-top:.9rem}
.lbox-add{background:var(--teal);color:#fff;border:none;padding:.6rem 1.8rem;font-family:'Barlow',sans-serif;font-size:.72rem;font-weight:600;display:inline-flex;align-items:center;gap:.45rem;margin:.8rem auto 0;cursor:pointer;transition:background .2s}
.lbox-add:hover{background:var(--teal-d)}

.site-footer{background:var(--black);color:rgba(255,255,255,.32);padding:3.8rem 1.5rem 1.8rem;border-top:2px solid var(--teal)}
.footer-inner{max-width:1380px;margin:0 auto}
.footer-grid{display:grid;grid-template-columns:1.8fr 1fr 1fr 1fr;gap:2.8rem;padding-bottom:2.8rem;margin-bottom:1.8rem;border-bottom:1px solid rgba(255,255,255,.06)}
.footer-logo{height:30px;opacity:.55;margin-bottom:1rem;filter:brightness(2) saturate(.5)}
.footer-brand p{font-size:.7rem;line-height:1.9;max-width:220px;font-weight:300}
.footer-soc{display:flex;gap:.5rem;margin-top:1rem}
.footer-soc a{width:30px;height:30px;border:1px solid rgba(255,255,255,.1);display:flex;align-items:center;justify-content:center;color:rgba(255,255,255,.3);font-size:0.6875rem;font-weight:600;transition:all .2s}
.footer-soc a:hover{border-color:var(--teal);color:var(--teal)}
.footer-col h4{font-size:0.6875rem;font-weight:700;letter-spacing:.26em;text-transform:uppercase;color:rgba(255,255,255,.55);margin-bottom:1rem}
.footer-col ul{list-style:none}
.footer-col li{font-size:.7rem;line-height:2.5;font-weight:300}
.footer-col a{color:inherit;transition:color .2s}
.footer-col a:hover{color:rgba(168,165,160,.9)}
.footer-bottom{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.8rem;font-size:0.6875rem;letter-spacing:.1em}
.footer-seals{display:flex;gap:.5rem;flex-wrap:wrap;justify-content:center}
.footer-seal{border:1px solid rgba(255,255,255,.07);padding:.22rem .6rem;letter-spacing:.1em;text-transform:uppercase;font-size:0.6875rem;color:rgba(255,255,255,.18)}

.breadcrumb{display:flex;align-items:center;gap:.45rem;font-size:.72rem;color:var(--g600);margin-bottom:1.1rem;flex-wrap:wrap}
.breadcrumb a{color:var(--g600);transition:color .2s}
.breadcrumb a:hover{color:var(--teal)}
.breadcrumb-sep{color:var(--g400)}

.page-hero{background:var(--black);padding:3rem 1.5rem 2.5rem;border-bottom:1px solid rgba(255,255,255,.06)}
.ph-inner{max-width:1380px;margin:0 auto}
.page-hero h1{font-family:'Barlow',sans-serif;font-size:clamp(1.7rem,4vw,2.8rem);color:#fff;letter-spacing:.02em;margin-bottom:.4rem}
.page-hero p{color:rgba(255,255,255,.38);font-size:.84rem;font-weight:300}

.section{padding:4.5rem 1.5rem}
.section-off{background:var(--off)}
.section-dark{background:var(--black)}
.wrap{max-width:1380px;margin:0 auto}
.sec-label{font-size:0.6875rem;font-weight:600;letter-spacing:.28em;text-transform:uppercase;color:var(--teal);margin-bottom:.5rem;display:flex;align-items:center;gap:.65rem}
.sec-label::before{content:'';display:block;width:18px;height:1.5px;background:var(--teal)}
.sec-title{font-family:'Barlow',sans-serif;font-size:clamp(1.5rem,3vw,2.3rem);color:var(--black)}
.sec-title.light{color:#fff}
.sec-hdr{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:2.5rem;gap:1.5rem;flex-wrap:wrap}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;padding:.78rem 1.6rem;font-family:'Barlow',sans-serif;font-size:.76rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;transition:all .2s;border:none;cursor:pointer;white-space:nowrap}
.btn-teal{background:var(--teal);color:#fff}
.btn-teal:hover{background:var(--teal-d);transform:translateY(-1px);box-shadow:0 4px 16px rgba(168,165,160,.3)}
.btn-dark{background:var(--black);color:#fff;border:1px solid rgba(255,255,255,.1)}
.btn-dark:hover{background:#222;border-color:rgba(255,255,255,.22)}
.btn-outline{background:transparent;color:var(--teal);border:1.5px solid var(--teal)}
.btn-outline:hover{background:var(--teal);color:#fff}
.btn-white{background:#fff;color:var(--black)}
.btn-white:hover{background:var(--g100)}
.btn-wa{background:#25D366;color:#141414}
.btn-wa:hover{background:#1db954;transform:translateY(-1px)}
.btn-sm{padding:.5rem 1.1rem;font-size:.7rem}
.btn-lg{padding:.92rem 2.2rem;font-size:.84rem}
.btn-full{width:100%}

.pgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:1.2rem}
.pcard{background:var(--white);border:1px solid var(--border);position:relative;overflow:hidden;transition:box-shadow .25s,transform .25s;cursor:pointer}
.pcard:hover{box-shadow:var(--shadow-md);transform:translateY(-3px)}
.pcard:hover .pcard-img img{transform:scale(1.05)}
.pcard-badge{position:absolute;top:.7rem;left:.7rem;z-index:2;padding:.25rem .65rem;font-size:0.6875rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#fff}
.pcard-badge.pe{background:var(--green)}
.pcard-badge.low{background:var(--orange)}
.pcard-badge.enc{background:var(--teal)}
.pcard-img{aspect-ratio:1;background:var(--g100);overflow:hidden;display:flex;align-items:center;justify-content:center}
.pcard-img img{width:100%;height:100%;object-fit:contain;padding:.5rem;transition:transform .5s ease}
.pcard-img .ph{font-family:'Barlow',sans-serif;font-size:3.5rem;color:rgba(168,165,160,.1);font-style:italic}
.pcard-act{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(to top,rgba(255,255,255,1) 60%,transparent);transform:translateY(100%);transition:transform .25s;padding:.7rem}
.pcard:hover .pcard-act{transform:none}
.btn-padd{width:100%;background:var(--teal);color:#fff;border:none;padding:.65rem;font-family:'Barlow',sans-serif;font-size:0.6875rem;font-weight:600;letter-spacing:.06em;display:flex;align-items:center;justify-content:center;gap:.4rem;transition:background .2s;cursor:pointer}
.btn-padd:hover{background:var(--teal-d)}
.btn-padd.done{background:#1a7a3a}
.pcard-body{padding:.88rem 1rem 1rem}
.pcard-cat{font-size:0.6875rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--teal);margin-bottom:.28rem}
.pcard-name{font-family:'Barlow',sans-serif;font-size:.9rem;color:var(--black);margin-bottom:.28rem;line-height:1.35;letter-spacing:.01em}
.pcard-price{font-family:'Barlow',sans-serif;font-size:1.1rem;font-weight:500;color:var(--black)}
.pcard-sub{font-size:0.6875rem;color:var(--g600);font-weight:300;margin-top:.1rem}

.pe-card{background:var(--white);border:1px solid var(--border);position:relative;transition:box-shadow .25s,transform .25s}
.pe-card:hover{box-shadow:var(--shadow-md);transform:translateY(-3px)}
.pe-flag{position:absolute;top:0;left:0;right:0;font-size:0.6875rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:#fff;text-align:center;padding:.26rem .5rem;z-index:2}
.pe-flag.ok{background:var(--green)}
.pe-flag.low{background:var(--orange)}
.pe-img{aspect-ratio:1;background:var(--g100);margin-top:24px;display:flex;align-items:center;justify-content:center;overflow:hidden}
.pe-img .ph{font-family:'Barlow',sans-serif;font-size:3rem;color:rgba(168,165,160,.1);font-style:italic}
.pe-body{padding:.88rem 1rem 1rem}
.pe-cat{font-size:0.6875rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--teal);margin-bottom:.28rem}
.pe-name{font-family:'Barlow',sans-serif;font-size:.9rem;color:var(--black);margin-bottom:.42rem;line-height:1.35}
.pe-price{font-family:'Barlow',sans-serif;font-size:1.35rem;font-weight:500;color:var(--black)}
.pe-atacado{font-size:0.6875rem;color:var(--teal);font-weight:600;margin-bottom:.38rem}
.pe-stock{font-size:0.6875rem;color:var(--g600);margin-bottom:.8rem;display:flex;align-items:center;gap:.35rem;font-weight:300}
.pe-stock-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}
.pe-stock-dot.ok{background:var(--green)}
.pe-stock-dot.low{background:var(--orange)}
.pe-btns{display:flex;gap:.45rem}
.btn-pe{flex:1;background:var(--teal);color:#fff;border:none;padding:.62rem .4rem;font-family:'Barlow',sans-serif;font-size:0.6875rem;font-weight:600;letter-spacing:.06em;display:flex;align-items:center;justify-content:center;gap:.35rem;transition:background .2s;cursor:pointer}
.btn-pe:hover{background:var(--teal-d)}
.btn-pe.done{background:#1a7a3a}
.btn-pe-wa{width:38px;flex-shrink:0;border:1.5px solid var(--green);background:none;color:var(--green);display:flex;align-items:center;justify-content:center;transition:all .2s;cursor:pointer}
.btn-pe-wa:hover{background:var(--green);color:#fff}

.no-res{padding:2.5rem;text-align:center;color:var(--g400);font-size:.72rem;letter-spacing:.1em;display:none}
.gempty{display:none;text-align:center;padding:4rem 1.5rem;color:var(--g600)}
.gempty.on{display:block}
.gempty h3{font-family:'Barlow',sans-serif;font-size:1.4rem;margin-bottom:.45rem}
.gempty p{font-size:.72rem;color:var(--g400);font-weight:300}

.sidebar{position:sticky;top:110px;align-self:start;border-right:1px solid var(--border);padding-right:1.8rem}
.sb-title{font-size:0.6875rem;font-weight:700;letter-spacing:.28em;text-transform:uppercase;color:var(--g600);margin-bottom:1.1rem;padding-bottom:.65rem;border-bottom:1px solid var(--border)}
.sb-list{list-style:none}
.sb-link{display:flex;align-items:center;justify-content:space-between;padding:.55rem .4rem;font-size:.78rem;color:var(--g800);transition:all .2s;border-left:2px solid transparent;padding-left:.7rem;text-decoration:none;cursor:pointer}
.sb-link:hover,.sb-link.on{color:var(--teal);border-left-color:var(--teal)}
.sb-link.on{font-weight:600}
.sb-cnt{font-size:0.6875rem;color:var(--g400)}
.sb-link.on .sb-cnt{color:var(--teal)}
.sb-div{height:1px;background:var(--border);margin:1.1rem 0}
.sb-note{background:var(--teal-m);border-left:3px solid var(--teal);padding:.85rem;font-size:0.6875rem;color:var(--teal-d);line-height:1.7}
.sb-note strong{display:block;font-size:0.6875rem;letter-spacing:.16em;text-transform:uppercase;margin-bottom:.32rem;color:var(--teal)}

.filter-bar{background:var(--white);border-bottom:1px solid var(--border);padding:0 1.5rem;overflow-x:auto;scrollbar-width:none}
.filter-bar::-webkit-scrollbar{display:none}
.filter-bar-inner{max-width:1380px;margin:0 auto;display:flex;height:44px;align-items:center;gap:0}
.ftab{padding:0 1.1rem;height:44px;background:none;border:none;border-bottom:2px solid transparent;font-family:'Barlow',sans-serif;font-size:.72rem;font-weight:500;color:var(--g600);white-space:nowrap;cursor:pointer;transition:all .18s;letter-spacing:.04em}
.ftab:hover{color:var(--teal)}
.ftab.on{color:var(--teal);border-bottom-color:var(--teal)}

.toast{position:fixed;bottom:1.8rem;right:1.8rem;background:var(--black);color:#fff;padding:.88rem 1.3rem;font-size:.78rem;font-weight:500;z-index:9999;transform:translateY(100px);opacity:0;transition:all .35s cubic-bezier(.4,0,.2,1);display:flex;align-items:center;gap:.65rem;max-width:300px;border-left:3px solid var(--teal)}
.toast.show{transform:translateY(0);opacity:1}

@media(max-width:1100px){
  .pgrid{grid-template-columns:repeat(3,1fr)}
  .footer-grid{grid-template-columns:1fr 1fr;gap:2rem}
}
@media(max-width:768px){
  .mob-btn{display:flex;width:44px;height:44px}
  .header-nav{display:none}
  .header-inner{padding:0 1rem;height:60px}
  .header-logo img{height:54px}
  .hbtn{width:44px;height:44px}
  
  .hbtn-txt span:not(.cart-dot){font-size:0.6875rem}
  .nav-bar{display:none}
  .announce{height:30px}
  .ann-item{font-size:0.6875rem;padding:0 1.5rem}
  .pgrid{grid-template-columns:repeat(2,1fr);gap:.8rem}
  .section{padding:3rem 1.2rem}
  .sec-hdr{flex-direction:column;align-items:flex-start;gap:.8rem}
  .footer-grid{grid-template-columns:1fr;gap:1.5rem}
  .site-footer{padding:3rem 1.2rem 1.5rem}
  .footer-bottom{flex-direction:column;text-align:center;gap:.6rem}
  .page-hero{padding:2.2rem 1.2rem 2rem}
  .cart-drawer{width:100vw}
}
@media(max-width:500px){
  .pgrid{grid-template-columns:repeat(2,1fr);gap:.65rem}
  .header-inner{padding:0 .8rem}
}

.enc-search-bar{background:var(--white);border-bottom:1px solid var(--border);padding:.72rem 1.5rem}
.enc-srch-in{max-width:1380px;margin:0 auto;display:flex;gap:.9rem;align-items:center;flex-wrap:wrap}
.enc-inp-wrap{flex:1;position:relative;max-width:480px}
.enc-inp-wrap svg{position:absolute;left:.78rem;top:50%;transform:translateY(-50%);color:var(--g400);pointer-events:none}
.enc-inp{width:100%;padding:.56rem .9rem .56rem 2.35rem;border:1.5px solid var(--border);background:var(--g100);font-family:'Barlow',sans-serif;font-size:.74rem;color:var(--black);outline:none;transition:border-color .18s}
.enc-inp:focus{border-color:var(--teal)}
.enc-inp::placeholder{color:var(--g400);font-weight:300}
.enc-clr{position:absolute;right:.6rem;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;color:var(--g400);font-size:1rem;display:none;line-height:1}
.enc-clr.on{display:block}
.enc-info{font-size:0.6875rem;color:var(--g600);white-space:nowrap}
.enc-wrap{max-width:1380px;margin:0 auto;padding:2.5rem 1.5rem 5rem}
.enc-layout{display:grid;grid-template-columns:196px 1fr;gap:2.5rem}
.enc-cat-sec{margin-bottom:4.5rem;scroll-margin-top:125px}
.enc-cat-hdr{display:flex;align-items:flex-end;justify-content:space-between;padding-bottom:.95rem;margin-bottom:1.8rem;border-bottom:2px solid var(--g200);position:relative}
.enc-cat-hdr::after{content:'';position:absolute;bottom:-2px;left:0;width:50px;height:2px;background:var(--teal)}
.enc-cat-hdr h2{font-family:'Barlow',sans-serif;font-size:1.65rem}
.enc-cat-hdr p{font-size:0.6875rem;color:var(--g600);font-weight:300;margin-top:.15rem}
.enc-cat-cnt{font-size:0.6875rem;color:var(--g400);letter-spacing:.1em;text-transform:uppercase}
.enc-pgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:1.1rem}
@media(max-width:1100px){.enc-pgrid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:900px){.enc-layout{grid-template-columns:1fr}.sidebar{display:none}}
@media(max-width:768px){.enc-wrap{padding:2rem 1.2rem 4rem}.enc-pgrid{grid-template-columns:repeat(2,1fr);gap:.75rem}.enc-search-bar{padding:.65rem 1.2rem}.enc-cat-hdr{flex-direction:column;align-items:flex-start;gap:.4rem}}
@media(max-width:500px){.enc-pgrid{grid-template-columns:repeat(2,1fr);gap:.6rem}}

/* ── FLOATING WHATSAPP BUTTON ── */
.wa-float{
  position:fixed;bottom:1.8rem;right:1.8rem;z-index:800;
  width:58px;height:58px;border-radius:50%;
  background:#25D366;color:#141414;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 4px 20px rgba(37,211,102,.45);
  transition:all .25s cubic-bezier(.175,.885,.32,1.275);
  text-decoration:none;border:none;cursor:pointer;
  animation:waPop .6s .5s cubic-bezier(.175,.885,.32,1.275) both;
}
.wa-float:hover{transform:scale(1.12);box-shadow:0 6px 28px rgba(37,211,102,.55)}
@keyframes waPop{from{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}
.wa-float-tooltip{
  position:absolute;right:calc(100% + .7rem);top:50%;transform:translateY(-50%);
  background:var(--black);color:#fff;font-family:'Barlow',sans-serif;
  font-size:.7rem;font-weight:500;white-space:nowrap;
  padding:.4rem .8rem;pointer-events:none;
  opacity:0;transition:opacity .2s;letter-spacing:.04em;
}
.wa-float:hover .wa-float-tooltip{opacity:1}
/* Hide while admin panel is open */
.admin-open .wa-float{display:none}


/* Sections with glass/semi-transparent backgrounds */

.benefit{background:transparent!important}
.benefit:hover{background:rgba(240,248,248,.7)!important}


.section-black{background:rgba(8,8,8,.90)!important}
.about-vis{background:rgba(27,26,26,.88)!important}
.about-cnt{background:rgba(10,10,10,.90)!important}


/* Hero - shader glows through */

/* Cart drawer / modals stay opaque */
.cart-drawer,.search-box,.mob-nav,.admin-overlay{background:var(--white)!important}
.cart-overlay{background:rgba(0,0,0,.55)!important}
/* Product cards */

/* Page heroes on other pages */

/* ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   MELHORIAS DE UX/UI - QIVON
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ */

/* 1. MICRO-INTERAÇÕES - Cards */
.pcard {
  transition: all 0.35s cubic-bezier(0.34, 1.56, 0.64, 1) !important;
}
.pcard:hover {
  transform: translateY(-8px) !important;
  box-shadow: 0 16px 40px rgba(168,165,160,0.18) !important;
}
.pe-card {
  transition: all 0.35s cubic-bezier(0.34, 1.56, 0.64, 1) !important;
}
.pe-card:hover {
  transform: translateY(-8px) !important;
  box-shadow: 0 16px 40px rgba(168,165,160,0.18) !important;
}

/* 2. BOTÕES - Efeito shine */
.btn {
  position: relative;
  overflow: hidden;
}
.btn::before {
  content: '';
  position: absolute;
  top: 0;
  left: -100%;
  width: 100%;
  height: 100%;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.25), transparent);
  transition: left 0.55s ease;
  pointer-events: none;
}
.btn:hover::before {
  left: 100%;
}

/* 3. NAV LINKS - Underline animado */
.hnav-link {
  position: relative;
  overflow: hidden;
}
.hnav-link::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: -100%;
  width: 100%;
  height: 2px;
  background: var(--teal);
  transition: left 0.3s ease;
}
.hnav-link:hover::after,
.hnav-link.act::after {
  left: 0;
}

/* 4. LOGO - Hover sutil */
.header-logo img {
  transition: transform 0.35s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.header-logo:hover img {
  transform: scale(1.06);
}

/* 5. CART DOT - Pulse ao adicionar */
.cart-dot.on {
  animation: cartPulse 0.45s cubic-bezier(0.34, 1.56, 0.64, 1);
}
@keyframes cartPulse {
  0%   { transform: scale(0); }
  60%  { transform: scale(1.4); }
  100% { transform: scale(1); }
}

/* 6. CART DRAWER - Slide suave */
.cart-drawer {
  transition: transform 0.38s cubic-bezier(0.4, 0, 0.2, 1) !important;
}
.cart-overlay {
  transition: opacity 0.3s ease !important;
}

/* 7. SEARCH OVERLAY - Fade suave */
.search-overlay {
  transition: opacity 0.25s ease !important;
  opacity: 0;
  pointer-events: none;
}
.search-overlay.open {
  opacity: 1 !important;
  pointer-events: all;
}

/* 8. MOBILE NAV - Transição suave */
.mob-nav {
  transition: transform 0.36s cubic-bezier(0.4, 0, 0.2, 1) !important;
}

/* 9. QUANTITY BUTTONS */
.q-btn, .qty-btn {
  transition: all 0.18s ease !important;
}
.q-btn:hover, .qty-btn:hover {
  transform: scale(1.15);
}
.q-btn:active, .qty-btn:active {
  transform: scale(0.9);
}

/* 10. BREADCRUMB */
.breadcrumb a {
  transition: all 0.2s ease !important;
}
.breadcrumb a:hover {
  color: var(--teal) !important;
  transform: translateX(3px);
  display: inline-block;
}

/* 11. FOOTER SOCIAL LINKS */
.footer-soc a {
  transition: all 0.25s cubic-bezier(0.34, 1.56, 0.64, 1) !important;
}
.footer-soc a:hover {
  transform: translateY(-3px) scale(1.1);
  border-color: var(--teal) !important;
  color: var(--teal) !important;
}

/* 12. FOCUS STATES - Acessibilidade */
button:focus-visible,
a:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
  outline: 2.5px solid var(--teal) !important;
  outline-offset: 3px !important;
}

/* 13. BENEFIT ICONS - Hover */
.benefit {
  transition: all 0.28s ease !important;
  cursor: default;
}
.benefit:hover .ben-ico {
  transform: scale(1.12) rotate(-5deg);
  transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.ben-ico {
  transition: transform 0.3s ease;
}

/* 14. CATEGORY TAGS - Hover premium */
.hcat-tag {
  transition: all 0.28s cubic-bezier(0.34, 1.56, 0.64, 1) !important;
}
.hcat:hover .hcat-tag {
  transform: translateY(-3px);
  box-shadow: 0 8px 24px rgba(168,165,160,0.35) !important;
}

/* 15. SECTION FADE-IN - Scroll animation */
.fade-in-up {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 0.65s ease, transform 0.65s ease;
}
.fade-in-up.visible {
  opacity: 1;
  transform: translateY(0);
}

/* 16. TOAST - Melhor animação */
.toast {
  transition: all 0.38s cubic-bezier(0.34, 1.56, 0.64, 1) !important;
}
.toast.show {
  transform: translateY(0) !important;
}

/* 17. HBTN (busca/carrinho) hover */
.hbtn {
  transition: all 0.22s cubic-bezier(0.34, 1.56, 0.64, 1) !important;
}
.hbtn:hover {
  transform: scale(1.08);
}

/* 18. ANNOUNCE BAR - pausa hover */
.announce-track:hover {
  animation-play-state: paused !important;
}

/* 19. PRODUTO - thumb hover */
.prod-thumb {
  transition: all 0.22s ease !important;
}
.prod-thumb:hover {
  transform: scale(1.05);
}

/* 20. FAQ items */
.pfaq-q {
  transition: all 0.2s ease !important;
}
.pfaq-q:hover {
  padding-left: 1.3rem !important;
  color: var(--teal) !important;
}

/* 21. Parallax helper */
.hero-carousel {
  will-change: transform;
}

/* 22. LOADING SPINNER para btn-padd */
.btn-padd.loading::after {
  content: '';
  display: inline-block;
  width: 11px;
  height: 11px;
  margin-left: 7px;
  border: 2px solid rgba(255,255,255,0.35);
  border-radius: 50%;
  border-top-color: #fff;
  animation: spin 0.7s linear infinite;
  vertical-align: middle;
}
@keyframes spin {
  to { transform: rotate(360deg); }
}

/* 23. ABOUT STATS - number highlight */
.as-num {
  transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.about-stats:hover .as-num {
  transform: scale(1.08);
}

/* 24. WA FLOAT - pulse ring */
.wa-float::before {
  content: '';
  position: absolute;
  inset: -4px;
  border-radius: 50%;
  border: 2px solid rgba(37,211,102,0.5);
  animation: waPing 2s ease-out infinite;
}
@keyframes waPing {
  0%   { transform: scale(1); opacity: 0.6; }
  100% { transform: scale(1.5); opacity: 0; }
}

/* 25. Smooth scroll global */
html { scroll-behavior: smooth; }


/* ── FUNDO BRANCO ── */
html, body {
  background: #ffffff !important;
}
.section-off { background: #ffffff !important; }
.section { background: #ffffff; }
.off { background: #ffffff !important; }


/* ── OVERLAYS FIX ── */
.search-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.55);
  z-index: 600;
  display: none;
  align-items: flex-start;
  justify-content: center;
  padding-top: 80px;
  backdrop-filter: blur(4px);
}
.search-overlay.open { display: flex !important; }
.cart-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.5);
  z-index: 700;
  opacity: 0;
  pointer-events: none;
  transition: opacity .3s;
  backdrop-filter: blur(3px);
}
.cart-overlay.on { opacity: 1 !important; pointer-events: all; }
.cart-drawer {
  position: fixed;
  top: 0; right: 0; bottom: 0;
  width: 400px;
  max-width: 100vw;
  background: #fff !important;
  z-index: 701;
  transform: translateX(100%);
  transition: transform .32s cubic-bezier(.4,0,.2,1);
  display: flex;
  flex-direction: column;
  box-shadow: -4px 0 36px rgba(0,0,0,.12);
}
.cart-drawer.on { transform: translateX(0) !important; }


.hnav-item{position:relative}
.hnav-item .hnav-dropdown{position:absolute;top:100%;left:50%;transform:translateX(-50%) translateY(-6px);background:#fff;border:1px solid var(--border);box-shadow:0 12px 40px rgba(0,0,0,.14);min-width:190px;opacity:0;pointer-events:none;transition:opacity .18s,transform .18s;z-index:600;padding:.4rem 0}
.hnav-item:hover .hnav-dropdown{opacity:1;pointer-events:auto;transform:translateX(-50%) translateY(0)}
.hnav-drop-lk{display:block;padding:.55rem 1.1rem;font-size:.77rem;color:var(--g600);transition:color .15s,background .15s;white-space:nowrap}
.hnav-drop-lk:hover{color:var(--teal);background:var(--teal-l,#f7f2ea)}
.hnav-link.act{color:var(--teal)!important;border-bottom-color:var(--teal)!important}

/* ── ARGENNTI-STYLE PRODUCT PAGE ── */
.ap-bc{max-width:1320px;margin:0 auto;padding:.85rem 1.5rem;display:flex;align-items:center;gap:.45rem;font-size:.72rem;color:var(--g600);flex-wrap:wrap}
.ap-bc a{color:var(--g600);text-decoration:none;transition:color .18s}.ap-bc a:hover{color:var(--teal)}
.ap-bc-sep{color:var(--g400);font-size:0.6875rem}

.ap-wrap{max-width:1320px;margin:0 auto;padding:1.2rem 1.5rem 5rem;display:grid;grid-template-columns:80px 1fr 1fr;gap:0 2.5rem;align-items:start}

/* Thumbnails column */
.ap-thumbs{display:flex;flex-direction:column;gap:.5rem;padding-top:.3rem}
.ap-thumb{width:72px;height:72px;border:1.5px solid var(--border);cursor:pointer;overflow:hidden;flex-shrink:0;transition:border-color .15s;background:#f5f5f3}
.ap-thumb img{width:100%;height:100%;object-fit:cover;transition:transform .3s}
.ap-thumb:hover img{transform:scale(1.06)}
.ap-thumb.on{border-color:var(--black)}

/* Main image */
.ap-main-img{aspect-ratio:1;overflow:hidden;background:#f5f5f3;position:relative;cursor:zoom-in}
.ap-main-img img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s ease}
.ap-main-img:hover img{transform:scale(1.04)}

/* Info column */
.ap-info{padding:.2rem 0}
.ap-badges{display:flex;gap:.38rem;margin-bottom:.85rem;flex-wrap:wrap}
.ap-badge{font-size:0.6875rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#fff;padding:.22rem .65rem}
.ap-badge.ok{background:var(--green)}.ap-badge.low{background:var(--orange)}.ap-badge.new{background:var(--teal)}.ap-badge.kit{background:#222}

.ap-name{font-size:1.15rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--black);line-height:1.25;margin-bottom:.5rem}
.ap-stars{display:flex;align-items:center;gap:.5rem;margin-bottom:1.1rem;padding-bottom:1.1rem;border-bottom:1px solid var(--border)}
.ap-stars-ico{color:#f59e0b;font-size:.88rem;letter-spacing:1px}
.ap-stars-lbl{font-size:0.6875rem;color:var(--g600)}

.ap-price-block{margin-bottom:1.1rem}
.ap-price-old{font-size:.82rem;color:var(--g400);text-decoration:line-through;margin-bottom:.18rem;font-weight:300}
.ap-price-val{font-family:'Barlow',sans-serif;font-size:2.1rem;font-weight:500;color:var(--black);line-height:1}
.ap-price-inst{font-size:.72rem;color:var(--g600);margin-top:.28rem;font-weight:300}
.ap-price-pix{display:inline-flex;align-items:center;gap:.35rem;font-size:0.6875rem;font-weight:600;color:var(--green);margin-top:.35rem;padding:.28rem .65rem;background:#f0faf4;border:1px solid #c6e8d2}

.ap-stock{display:inline-flex;align-items:center;gap:.5rem;font-size:.72rem;font-weight:600;letter-spacing:.02em;padding:.45rem .8rem;border-radius:999px;margin-bottom:1.1rem;background:#eef2fb;color:#2f4b8f;border:1px solid #d3ddf5}
.ap-stock-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.ap-stock-dot.ok{background:#2f4b8f}.ap-stock-dot.low{background:var(--orange)}

/* CTA buttons */
.ap-btns{display:flex;flex-direction:column;gap:.55rem;margin-bottom:1.4rem}
.ap-btn-cart{order:1;width:100%;background:var(--teal);color:#fff;border:none;padding:.9rem 1rem;font-size:.75rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;display:flex;align-items:center;justify-content:center;gap:.5rem;cursor:pointer;transition:all .22s}
.ap-btn-cart:hover{background:var(--teal-d);transform:translateY(-2px);box-shadow:0 6px 20px rgba(168,165,160,.3)}
.ap-btn-cart.done{background:#1a7a3a}
.ap-btn-wa{order:2;width:auto;align-self:center;background:transparent;color:var(--g600);border:none;padding:.35rem .5rem;font-size:.72rem;font-weight:500;letter-spacing:.01em;text-transform:none;display:flex;align-items:center;justify-content:center;gap:.4rem;cursor:pointer;text-decoration:underline;text-underline-offset:2px;transition:color .18s}
.ap-btn-wa:hover{color:var(--teal)}
.ap-btn-wa svg{width:13px;height:13px}

/* Trust badges */
.ap-trust{display:grid;grid-template-columns:1fr 1fr;gap:.6rem;margin-bottom:1.2rem;padding:1rem;background:#f9f9f7;border:1px solid var(--border)}
.ap-trust-item{display:flex;align-items:center;gap:.55rem}
.ap-trust-ico{width:34px;height:34px;background:#fff;border:1px solid var(--border);border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--teal)}
.ap-trust-lbl{font-size:0.6875rem;font-weight:700;color:var(--black);line-height:1.3}
.ap-trust-sub{font-size:0.6875rem;color:var(--g600);font-weight:300}

/* Accordion */
.ap-accordion{border-top:1px solid var(--border)}
.ap-acc-item{border-bottom:1px solid var(--border)}
.ap-acc-btn{width:100%;background:none;border:none;padding:.95rem 0;display:flex;align-items:center;justify-content:space-between;cursor:pointer;font-size:.72rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--black);text-align:left}
.ap-acc-btn svg{transition:transform .2s;flex-shrink:0}
.ap-acc-btn.open svg{transform:rotate(180deg)}
.ap-acc-body{display:none;padding:.4rem 0 1.1rem;font-size:.8rem;color:var(--g600);line-height:1.85;font-weight:300}
.ap-acc-body.open{display:block}
.ap-acc-body ul{padding-left:1.1rem;margin:.5rem 0}
.ap-acc-body li{margin-bottom:.3rem}

/* Specs table */
.ap-specs-tbl{width:100%;border-collapse:collapse}
.ap-specs-tbl tr{border-bottom:1px solid var(--border)}
.ap-specs-tbl td{padding:.5rem .25rem;font-size:.75rem}
.ap-specs-tbl td:first-child{font-weight:600;color:var(--black);width:130px}
.ap-specs-tbl td:last-child{color:var(--g600);font-weight:300}

/* Back link */
.ap-back{display:inline-flex;align-items:center;gap:.35rem;font-size:0.6875rem;color:var(--teal);font-weight:600;text-decoration:none;letter-spacing:.05em;margin-top:1.2rem}
.ap-back:hover{color:var(--teal-d)}

@media(max-width:1000px){
  .ap-wrap{grid-template-columns:64px 1fr 1fr;gap:0 1.8rem}
  .ap-thumb{width:60px;height:60px}
}
@media(max-width:768px){
  .ap-wrap{grid-template-columns:1fr;gap:1rem}
  .ap-thumbs{flex-direction:row;gap:.4rem}
  .ap-thumb{width:60px;height:60px}
  .ap-main-img{aspect-ratio:4/3}
  .ap-trust{grid-template-columns:1fr}
}


.search-go{background:var(--teal);color:#fff;border:none;padding:.5rem 1rem;font-family:'Barlow',sans-serif;font-size:.72rem;font-weight:700;letter-spacing:.06em;cursor:pointer;transition:background .18s;white-space:nowrap}
.search-go:hover{background:var(--teal-d)}
.search-close{background:none;border:none;font-size:1.1rem;color:#aaa;cursor:pointer;padding:.3rem .5rem;line-height:1;transition:color .18s}
.search-close:hover{color:var(--black)}


/*qivon-mobile*/
/* ============================================================
   QivoN - correcoes de responsividade (gerado por
   catalogo-sync/gen_mobile_fix.py - NAO editar a mao)
   ============================================================ */

/* ------------------------------------------------------------
   1. O estouro horizontal da pronta-entrega: 418px a 375px.

   NAO se corrige com overflow-x:hidden. A causa e que item de grid
   e item de flex nascem com `min-width:auto`, que significa "nao
   encolha abaixo do seu conteudo". O `main` da pronta-entrega e
   item do grid `.enc-layout`, e dentro dele a barra de categorias
   tem 6 chips com `white-space:nowrap` somando 599px. O `main`
   entao assumia 773px dentro de uma tela de 375px e arrastava a
   pagina inteira para fora.

   `.cf-nav-scroll` ja nascia com `overflow-x:auto` - a rolagem
   lateral dos chips e o desenho pretendido. Era o `min-width:auto`
   que a impedia de funcionar.

   FORA de media query de proposito: medido, o mesmo estouro
   acontece a 700px (+95px) e a 1000px (+36px). Onde nao ha
   estouro, a regra nao muda nada - ela so permite encolher quem
   precisaria encolher.
   ------------------------------------------------------------ */
.enc-layout > * { min-width: 0; }
.cf-nav-scroll  { min-width: 0; }

/* ------------------------------------------------------------
   8. O MESMO defeito nas 2.362 paginas de produto: 20px a 320px
   (29/09/2026).

   Mesma causa da regra 1, outro lugar. `.ap-info` e item do grid da
   pagina de produto e nasce com `min-width:auto`. Dentro dele, a
   caixa de frete tem `<input id="apfCep">` + botao "Calcular" num
   flex de uma linha; o input ja traz `min-width:0`, mas isso deixa o
   INPUT encolher - nao deixa o `.ap-info` assumir largura menor que o
   min-content dos filhos. Ele assumia 316px com 24px de recuo, ou
   seja 340px numa tela de 320.

   Provado uma candidata por vez, com a pagina no navegador:

     #apfCep{width:0}            340 -> 320   resolve, mas trata o sintoma
     .apf-form{min-width:0}      340          nao resolve
     .ap-frete{min-width:0}      340          nao resolve
     .ap-info{min-width:0}       340 -> 320   resolve na causa

   Nao se corrige com `overflow-x:hidden`: o `body` das paginas de
   produto JA tem isso, e foi exatamente por isso que o defeito viveu
   ate aqui. O `hidden` esconde a barra e deixa o documento com 340px
   de largura - a pagina continua arrastando de lado no dedo.

   Fora de media query pelo mesmo motivo da regra 1: onde ha espaco,
   `min-width:0` nao muda nada. Medido a 360 e 375px: sem efeito.
   ------------------------------------------------------------ */
.ap-info { min-width: 0; }

/* ------------------------------------------------------------
   10. Duas barras `sticky` grudando no MESMO lugar, na
   pronta-entrega (29/09/2026). Vale em TODAS as larguras.

   A pagina tem quatro elementos `sticky`:

     .site-header    top:0px     z:500
     .cat-tabs-bar   top:60/66px z:450
     .sidebar        top:110px   z:auto
     .cf-nav         top:66px    z:40     <-- a barra de filtros

   `.cf-nav` gruda a 66px, que e exatamente onde `.cat-tabs-bar`
   tambem gruda. As duas ocupam a mesma faixa e a de cima tem
   z-index 450 contra 40: assim que a pagina rola, as abas passam
   por cima de 30px dos 35px do seletor de ordenacao.

   O efeito nao e visual, e funcional: medido com
   `elementFromPoint` no centro do controle, quem recebe o toque e
   `.cat-tab`. **Ordenar e filtrar ficam inclicaveis enquanto se
   rola** - e rolar e o unico jeito de ver a grade.

   Isto NAO e defeito de celular. Medido nas 13 larguras do Bloco
   F, de 320 a 2560: reprovava em **13 de 13**. Por isso a regra
   fica fora de qualquer media query.

   Os 114px sao medidos, nao arredondados: `.cat-tabs-bar` termina
   em 108px ate 768 e em 114px de 1024 para cima. 114 limpa as duas
   pontas (sobra 6px no celular, 0 no desktop). Com a regra: 13 de
   13 livres.

   `z-index` nao resolve. Subir o da `.cf-nav` poe a barra de
   filtros por cima das abas - troca quem fica inacessivel, nao
   conserta. As duas barras precisam se EMPILHAR, e empilhar e
   escolher o `top` da de baixo.

   **A CORRECAO NAO PODE MORAR AQUI, E ESSA E A LICAO.**

   Ela chegou a ser escrita nesta folha, o teste passou, o arquivo
   ficou no disco com a regra certa - e o site continuou reprovando
   nas 13 larguras. `js/catalogo-filtros.js` cria a barra e injeta
   um `<style id="cf-css">` no <head> em tempo de execucao: ele
   entra DEPOIS do `<link>` desta folha, e com a mesma
   especificidade quem chega por ultimo ganha.

   Regra que esta no arquivo e nao vale e pior que regra ausente:
   ela faz o proximo leitor acreditar que o assunto foi tratado.
   Por isso ela foi retirada daqui, e o `top` corrigido na origem -
   em `js/catalogo-filtros.js`, onde o valor e escrito.

   Sobra um caso a 320px, e ele e outro problema: ali o strip de
   chips fica com 73px visiveis para 633px de conteudo, porque o
   `min-width:0` da regra 1 (que tirou o estouro a 375px) tambem o
   deixa colapsar quando o "Ordenar" divide a linha. Os chips
   continuam alcancaveis arrastando. Fica registrado sem correcao:
   as tres candidatas de flex testadas nao mudaram um pixel, o que
   diz que a largura vem de outro lugar - e chutar regra em layout
   que nao se entendeu e como se cria o proximo band-aid.
   ------------------------------------------------------------ */

@media (max-width: 768px) {

  /* ----------------------------------------------------------
     2. A logo fora de centro: 23px a 375px, 49px a 320px.

     O header e `grid-template-columns:1fr auto 1fr`, que centra a
     logo quando as duas colunas 1fr ficam iguais. A da direita tem
     3 botoes de 44px (142px de min-content) e nao encolhe; a
     esquerda fica com a sobra. A 768px+ ha espaco para as duas
     serem iguais e a logo esta perfeitamente centrada - por isso o
     desktop nao tem o problema e nao e tocado aqui.

     Reduzir a logo de 54px para 44px devolve ~20px a cada lado. A
     imagem e 640x427; a altura menor mantem a proporcao exata
     (a largura acompanha), entao ela nao espreme nem estica.
     ---------------------------------------------------------- */
  .header-logo img { height: 44px; }

  /* ----------------------------------------------------------
     3. O "site da zoom sozinho".

     Nao e a meta viewport - ela esta correta nas 2.402 paginas
     (`width=device-width,initial-scale=1`) e sem `user-scalable=no`,
     que continua sendo o certo para acessibilidade.

     E o iOS: ao focar um campo com fonte menor que 16px, o Safari
     amplia a pagina - e depois da ampliacao ela desliza para os
     lados. Estavam abaixo de 16px: a busca do catalogo e da
     pronta-entrega (12px), o "ordenar" (12px), o login (14px) e a
     busca do site (14px).

     A primeira versao desta regra era so `input,select,textarea` e
     nao pegou quase nada: seletor de tipo vale (0,0,1) e perde para
     `.ct-f input` (0,1,1), `.enc-inp` e `.cf-sort` (0,1,0). Medir
     depois de aplicar foi o que mostrou isso - a regra existia e
     estava sendo ignorada em 5 dos 6 campos.

     Por isso cada alvo abaixo esta nomeado: empata em especificidade
     e ganha por vir depois. `select.cf-sort` leva o tipo junto de
     proposito - aquele bloco e injetado por JS no fim do <head>,
     depois desta folha, entao empate ali seria derrota.
     ---------------------------------------------------------- */
  input, select, textarea,
  .ct-f input, .sr-bar input, .search-top input,
  input.enc-inp, select.cf-sort, input.form-input, .form-input,
  input.cat-sort, select.cat-sort, #catSort, #cfSortM, #peSearch,
  #srInput, #clEmail, #clSenha { font-size: 16px; }

  /* ----------------------------------------------------------
     4. Alvos de toque abaixo de 44px (referencia da Apple HIG e
     do WCAG 2.5.5). Medidos: fechar do menu 35x35 (15x21 nas
     paginas de produto) e os links de categoria do menu 238x36.
     ---------------------------------------------------------- */
  .mob-close { width: 44px; height: 44px; display: flex;
               align-items: center; justify-content: center; padding: 0; }
  .mob-sub a, .mob-lk-main { min-height: 44px; display: flex; align-items: center; }

  /* ----------------------------------------------------------
     5. A lupa sai do cabecalho para a logo poder centrar.

     Com 3 botoes de 44px a coluna da direita tem 142px de
     min-content e nao encolhe; a esquerda fica com a sobra e a
     logo era empurrada 15px para fora do centro a 375px e 43px a
     320px. Com 2 botoes a coluna cai para ~93px e as duas laterais
     ficam iguais.

     `html.qv-busca-no-menu` nao e enfeite: a classe e posta pelo
     `js/busca-sugestoes.js` DEPOIS de inserir a busca no menu. Se
     aquele arquivo estiver velho no cache do visitante (o
     .htaccess guarda JS por um mes), a classe nao aparece, a lupa
     continua no cabecalho e ninguem fica sem busca. Esconder e
     oferecer sao o mesmo passo, e nao dois arquivos torcendo para
     expirar juntos.
     ---------------------------------------------------------- */
  html.qv-busca-no-menu .header-right button[aria-label="Pesquisar"] { display: none; }

  .mob-busca { width: 100%; background: none; border: none; padding: 0;
               font-family: inherit; font-size: 1rem; color: inherit;
               cursor: pointer; text-align: left; gap: .45rem; }

  /* ----------------------------------------------------------
     6. Alvos de toque da gaveta do carrinho, do rodape e dos
     modais - a segunda rodada da auditoria (22/09/2026).

     Medido a 375px, com produto real na gaveta e o modal aberto.
     NAO ha estouro horizontal em nenhum deles: gaveta, rodape,
     tabela de especificacoes e modal de guia cabem todos na tela.
     O que falha e o tamanho do que se toca:

       .q-btn (- e +)        22x22
       .ci-del (remover)     13x25
       .cart-x (fechar)      17x34
       .tg-x (fechar modal)  30x30
       .tg-guide-link        101x14
       .footer-soc a         30x30

     O minimo AA do WCAG 2.5.8 e 24x24; a diretriz da Apple e o
     WCAG 2.5.5 pedem 44x44. Quatro deles reprovam ate no minimo.

     A area cresce por `::after`, nao por padding: o desenho nao se
     move um pixel e o dedo ganha a area. Padding mudaria a altura
     das linhas do carrinho e do rodape, que e justamente o que o
     pedido proibiu mexer sem necessidade.

     Os valores nao sao uniformes porque os vizinhos nao sao. O vao
     entre `-` e `+` e 28px, entao 11px para cada lado nao os faz
     colidir (param em 131 e 137). Os icones sociais tem so 8px de
     vao: 7px para cada lado se sobreporia, por isso eles crescem
     4px na horizontal e 7px na vertical. O `.ci-del` esta a 169px
     do `+` mais proximo - nao ha risco de tocar um e acertar o
     outro, que seria grave por ele apagar o item.

     `.tg-x` fica FORA da regra de `position:relative`: ele ja e
     `position:absolute` no canto do modal, e sobrescrever isso o
     jogaria para o meio do conteudo. Ele ja e ancestral posicionado
     do proprio ::after, entao nao precisa.
     ---------------------------------------------------------- */
  .cart-x, .ci-del, .q-btn, .tg-guide-link,
  .footer-soc a { position: relative; }

  .cart-x::after, .ci-del::after, .q-btn::after, .tg-x::after,
  .tg-guide-link::after, .footer-soc a::after { content: ""; position: absolute; }

  .q-btn::after         { inset: -11px; }        /* 22x22  -> 44x44 */
  .ci-del::after        { inset: -10px -16px; }  /* 13x25  -> 45x45 */
  .cart-x::after        { inset: -5px -14px; }   /* 17x34  -> 45x44 */
  .tg-x::after          { inset: -7px; }         /* 30x30  -> 44x44 */
  .tg-guide-link::after { inset: -15px 0; }      /* 101x14 -> 101x44 */
  .footer-soc a::after  { inset: -7px -4px; }    /* 30x30  -> 38x44 */

  /* ----------------------------------------------------------
     Os 7 links do rodape sao `display:inline` com `line-height:28px`
     e `padding:0`: a caixa clicavel tem a altura da FONTE (14px),
     nao a da linha. Metade do passo de 28px e vao morto entre um
     link e o proximo.

     `inline-block` faz a caixa ocupar os 28px que a linha ja
     reservava - o alvo dobra e nada se move, porque o espaco ja
     estava la. Medido antes: nenhum dos 7 quebra em duas linhas,
     que e a unica coisa que `inline-block` mudaria.

     28px passa o minimo AA (24) e nao chega aos 44 da diretriz.
     Chegar exigiria espacar a lista, que e mudanca de desenho.
     ---------------------------------------------------------- */
  .footer-col a { display: inline-block; }

  /* ----------------------------------------------------------
     9. Mais seis alvos abaixo do minimo (29/09/2026).

     Achados pelo `medir_responsivo.js`, que mede a area util por
     HIT-TEST (`elementFromPoint`) em vez de ler o retangulo. A
     diferenca importa nos dois sentidos: os alvos ja expandidos aqui
     em cima somem da lista sozinhos - o `::after` deles e creditado -
     e estes seis continuam aparecendo depois de creditado tudo.

       .hero-new-dot    24x3  - os pontinhos do carrossel da home
       .breadcrumb a   27x18  - "Inicio", nas 15 paginas da raiz
       .ap-bc a        27x18  - o mesmo, nas 2.362 de produto
       .cat-grid-hdr a 82x18  - "Ver todos"
       .ct-card.tt a  105x14  - "Esqueci minha senha", na conta

     Mesma tecnica das regras acima: `::after`, nunca padding.
     "Esqueci minha senha" e o caso que mais dolorido: quem erra o
     toque nele fica sem entrar na conta.

     TODOS crescem SO na vertical (`inset: -Npx 0`). Na horizontal
     eles tem vizinho colado - o `>` do breadcrumb, o "Criar conta"
     ao lado - e alargar faria tocar um e acertar o outro.

     Os pontinhos do carrossel param em 24px de area util porque
     24px e a LARGURA deles, e alargar e decisao de desenho, nao de
     acessibilidade. 24 e exatamente o minimo do criterio 2.5.8.
     ---------------------------------------------------------- */
  .hero-new-dot, .breadcrumb a, .ap-bc a,
  .cat-grid-hdr a, .ct-card.tt a { position: relative; }

  .hero-new-dot::after, .breadcrumb a::after, .ap-bc a::after,
  .cat-grid-hdr a::after, .ct-card.tt a::after { content: ""; position: absolute; }

  .hero-new-dot::after   { inset: -13px 0; }   /*  24x3  -> 24x29 */
  .breadcrumb a::after   { inset: -13px 0; }   /*  27x18 -> 27x44 */
  .ap-bc a::after        { inset: -13px 0; }   /*  27x18 -> 27x44 */
  .cat-grid-hdr a::after { inset: -13px 0; }   /*  82x18 -> 82x44 */
  .ct-card.tt a::after   { inset: -15px 0; }   /* 105x14 -> 105x44 */
}

/* ------------------------------------------------------------
   7. O preco coberto pelo botao "Adicionar" no card (22/09/2026).

   O card foi desenhado para mouse:

     .pcard-act { position:absolute; bottom:0;
                  transform: translateY(100%);
                  background: linear-gradient(to top, #fff 60%, transparent) }
     .pcard:hover .pcard-act { transform: none }

   O botao mora escondido ABAIXO do card, clipado pelo
   `overflow:hidden`, e sobe por cima do conteudo quando o mouse
   entra. Com fundo branco: ele nao divide espaco com o preco, ele
   TAPA o preco. No desktop isso passa porque so dura enquanto o
   ponteiro esta ali.

   **A parte do hover ja estava resolvida, e nao e essa a falha.**
   As paginas da raiz ja trazem, no CSS embutido:

     @media(hover:none){ .pcard-act{ transform:none } }

   Ou seja: no celular o botao ja aparecia sempre - de proposito.
   O que ninguem fez foi **reservar o lugar dele**. Ele continua
   `position:absolute; bottom:0`, entao passa a ficar permanentemente
   por cima dos ultimos ~61px do card, e o preco mora justamente ali.

   Medido nos 12 cards da aba Mais Vendidos a 375px, com a regra de
   hover que ja esta no ar: **9 dos 12 com o preco coberto, ate 39px**.
   Nao e aleatorio - sao os cards com desconto, onde o bloco de preco
   tem tres linhas (preco antigo, preco atual, percentual) e por isso
   desce ate a faixa do botao. Com o `padding-bottom`: 0 de 12.

   Os 68px sao medidos, nao arredondados: o `.pcard-act` tem 60,5px
   (0,7rem de padding + 38px de botao) e sobram ~7px de folga.

   O DOM poe `.pcard-act` ANTES de `.pcard-body`, entao tirar o
   `position:absolute` jogaria o botao para o meio do card, entre a
   foto e o nome - medido, e por isso descartado. Ele continua
   absoluto; o espaco e que passa a existir.

   O `transform:none` abaixo DUPLICA o que as paginas da raiz ja
   fazem, e fica de proposito: os `produto-v*.css` nao tem essa regra,
   e assim a folha nao depende de o CSS embutido continuar trazendo-a.
   Hoje isso nao muda nada - nenhuma pagina de produto renderiza
   `.pcard` (conferido nas 2.362). E seguro e nao e inutil: e a folha
   ficar completa sozinha.

   `.pc2-quick` nao entra aqui, mas o MOTIVO escrito ate 29/09/2026
   estava errado, e errado do jeito perigoso: dizia que nenhum `.pc2`
   e renderizado, que era "folha morta". Medido no DOM, a **home tem
   12 cards `.pc2`**, com 12 `.pc2-quick` - e a home e onde o trafego
   de anuncio cai. A frase autorizava a nao conferir justamente a
   pagina mais visitada.

   Conferido de novo, agora no pixel: o `.pc2-quick` NAO tapa o preco.
   O retangulo dele cruza o do preco em ate 23px e o fundo e preto a
   82%, entao a conta de sobreposicao acusa - mas `elementFromPoint`
   no centro do preco devolve `.pc2-price`, e a captura de tela mostra
   o valor limpo. Sobreposicao de retangulo nao e cobertura; quem
   decide e a ordem de pintura.

   Fica sem regra porque nao ha defeito, e nao porque nao ha `.pc2`.

   (Nota: nao se escreve o glob de `data` com barra e asterisco aqui
   dentro - essa dupla ABRE outro comentario, e o conferir_css pegou
   exatamente isso na primeira tentativa desta secao.)
   ------------------------------------------------------------ */
@media (hover: none) {
  .pcard-act  { transform: none; }
  .pcard-body { padding-bottom: 68px; }
}

/* ------------------------------------------------------------
   11. Metade do menu "Joias" fora da tela, em notebook
   (29/09/2026, reportado pelo dono).

   `.hnav-dropdown` abre CENTRADO no item que o dispara
   (`left:50%` + `translateX(-50%)`), e isso funciona enquanto o
   painel e estreito: os outros tem 190px. A variante `.dd-grid`
   -- a de "Joias", com duas colunas e 23 categorias -- tem 360px,
   e "Joias" e o PRIMEIRO item da nav. Metade de 360 cai a esquerda
   de um item que esta a ~60px da borda, entao 120px saem da tela.

   Nao e caso de tela pequena. Medido no navegador, a coluna da
   esquerda inteira some a partir de 1536px, e 12 dos 23 links
   ficam inalcancaveis -- 1536, 1440 e 1366 sao larguras de
   notebook comum, provavelmente a maioria de quem visita em
   computador. So 1680px para cima escapava.

           1920px   left= 150   23/23 links
           1680px   left=  30   23/23
           1536px   left= -42   11/23
           1366px   left=-120   11/23   <- o notebook do dono

   A correcao e ancorar o painel na BORDA ESQUERDA do item em vez
   de no centro dele. Vale em qualquer largura e nao inventa
   breakpoint: dropdown alinhado ao gatilho e o comportamento
   normal de um menu que abre no primeiro item, e a folga toda
   esta a direita. Tem de repetir no estado de hover porque a
   animacao de entrada reescreve o `transform` inteiro.

   Sem `@media`: o defeito nao e de mobile. Abaixo de 992px quem
   manda e o menu hamburguer, que tem marcacao propria e nao passa
   por aqui.

   Confere com `catalogo-sync/medir_dropdown.js`, que mede o
   retangulo do painel e conta links dentro da janela.
   ------------------------------------------------------------ */
.hnav-item .hnav-dropdown.dd-grid       { left: 0; transform: translateX(0) translateY(-6px); }
.hnav-item:hover .hnav-dropdown.dd-grid { transform: translateX(0) translateY(0); }

/* ------------------------------------------------------------
   O MENU ABRE DO LADO DO BOTAO QUE O ABRE.
   Pedido do dono em 20/10/2026: "o menu ao clicar nos tres
   risquinhos em cima na ESQUERDA abre pelo LADO DIREITO".

   O hamburguer fica a esquerda do cabecalho e a gaveta nascia
   ancorada em `right:0` com `translateX(100%)`. Clicar num canto
   e ver o painel vir do canto oposto quebra a relacao entre o
   gesto e o resultado, e de quebra o painel cruza a tela inteira
   por cima do conteudo.

   O CARRINHO E A CONTA FICAM A DIREITA, e isso e a outra metade
   do pedido: os botoes deles estao naquele lado, e a gaveta do
   carrinho (`.cart-drawer`) nao e tocada aqui.

   SAO QUATRO PROPRIEDADES, nao uma. Trocar so o `transform`
   deixaria o painel ancorado a direita deslizando para fora da
   tela; e a borda e a sombra continuariam apontando para o lado
   errado -- detalhe que ninguem nomeia e todo mundo sente.

   Sem `@media`: a `.mob-nav` so existe no cabecalho mobile, que
   a propria pagina ja esconde acima de 992px.
   ------------------------------------------------------------ */
.mob-nav {
  right: auto;
  left: 0;
  transform: translateX(-100%);
  border-left: 0;
  border-right: 3px solid var(--teal);
  box-shadow: 5px 0 30px rgba(0, 0, 0, .16);
}
.mob-nav.open { transform: translateX(0); }

/*/qivon-mobile*/

/*qivon-legibilidade*/
/* Contraste WCAG AA. Gerado por catalogo-sync/gen_legibilidade.py a
   partir da medicao em navegador (medir_legibilidade.js) de 2026-09-28.
   NAO editar a mao: a proxima medicao reescreve este bloco.
   Cada regra abaixo tem uma razao de contraste medida, nao escolhida. */
.ap-back{color:#797673}  /* 2.47:1 -> 4.5 ; 4 elemento(s) */
.ap-badge.new{background-color:#797673}  /* 2.47:1 -> 4.5 ; 6 elemento(s) */
.ap-badge.ok{background-color:#1e874a}  /* 4.49:1 -> 4.5 ; 2 elemento(s) */
.ap-bc-sep{color:#757575}  /* 2.32:1 -> 4.5 ; 12 elemento(s) */
.ap-price-off{color:#716f6c}  /* 2.27:1 -> 4.5 ; 4 elemento(s) */
.ap-price-old{color:#757575}  /* 2.32:1 -> 4.5 ; 4 elemento(s) */
.apf-form button{background-color:#797673}  /* 2.47:1 -> 4.5 ; 4 elemento(s) */
.cart-empty-msg{color:#949494}  /* 2.32:1 -> 3 ; 76 elemento(s) */
.cart-x{color:#757575}  /* 2.32:1 -> 4.5 ; 38 elemento(s) */
.footer-seal{color:rgba(255,255,255,0.45)}  /* 1.73:1 -> 4.5 ; 12 elemento(s) */
.footer-soc a{color:rgba(255,255,255,0.45)}  /* 2.69:1 -> 4.5 ; 8 elemento(s) */
.mob-nav-sec{color:#757575}  /* 2.32:1 -> 4.5 ; 114 elemento(s) */
/*/qivon-legibilidade*/

/*qivon-produto*/
/* NAO editar a mao - catalogo-sync/gen_produto_layout.py */
/* 1. GRADE -- a foto manda, e as miniaturas saem da coluna propria.
      Breakpoints 1000 e 768 sao os que a folha ja usa; inventar um
      terceiro deixaria uma faixa com meio layout. */
/*    AS LINHAS SAO `auto 1fr`, E ISSO NAO E DETALHE.
      Com `auto auto`, a coluna de info (1178px) e mais alta que foto +
      miniaturas, e o navegador distribui a sobra entre as DUAS linhas: a
      linha 1 cresce, e as miniaturas -- que estao na linha 2 -- descem
      junto. Medido: 219px de buraco entre o pe da foto e elas, que le como
      bloco que falhou em carregar. Com `1fr` na segunda, toda a sobra vai
      para ela e as miniaturas ficam coladas na foto. */
@media (min-width:1001px){
  .ap-wrap{grid-template-columns:1.12fr 1fr;grid-template-rows:auto 1fr;
           gap:0 3rem;align-items:start}
  .ap-wrap>.ap-main-img{grid-column:1;grid-row:1}
  .ap-wrap>.ap-thumbs{grid-column:1;grid-row:2;align-self:start;
                      flex-direction:row;gap:.5rem;padding-top:.75rem}
  .ap-wrap>.ap-info{grid-column:2;grid-row:1 / span 2}
}
@media (min-width:769px) and (max-width:1000px){
  .ap-wrap{grid-template-columns:1.08fr 1fr;grid-template-rows:auto 1fr;
           gap:0 2rem}
  .ap-wrap>.ap-main-img{grid-column:1;grid-row:1}
  .ap-wrap>.ap-thumbs{grid-column:1;grid-row:2;align-self:start;
                      flex-direction:row;gap:.45rem;padding-top:.6rem}
  .ap-wrap>.ap-info{grid-column:2;grid-row:1 / span 2}
}

/* 2. CELULAR -- a foto antes das miniaturas.
      `.ap-thumbs` e o primeiro filho no DOM; sem isto o visitante ve tres
      quadradinhos de 60px antes de ver a peca. */
@media (max-width:768px){
  .ap-wrap>.ap-main-img{order:1}
  .ap-wrap>.ap-thumbs{order:2;padding-top:.6rem}
  .ap-wrap>.ap-info{order:3}
}

/* 3. O TITULO LIDERA.
      1.15rem num <h1> perdia para o preco e empatava com os selos acima. */
.ap-info .ap-name{font-size:1.45rem;line-height:1.2;margin-bottom:.55rem}
@media (max-width:768px){ .ap-info .ap-name{font-size:1.25rem} }

/* 4. RITMO -- o que e do mesmo assunto fica junto; assunto novo ganha ar.
      Os nove blocos tinham espacamento quase uniforme, e e isso que faz
      tudo parecer igualmente importante. */
.ap-info .ap-badges{margin-bottom:.7rem}
.ap-info .ap-stars{margin-bottom:.95rem;padding-bottom:.95rem}
.ap-info .ap-price-block{margin-bottom:1.3rem}
.ap-info .ap-btns{margin-bottom:1.7rem;gap:.6rem}

/* 5. A CONFIANCA RECUA.
      Caixa preenchida com borda, do mesmo tamanho do bloco de preco,
      competindo com ele. Vira lista sobre branco, separada por um fio. */
.ap-info .ap-trust{background:none;border:0;border-top:1px solid var(--border);
                   padding:1.1rem 0 0;margin-bottom:1.1rem;gap:.7rem .9rem}

/* 6. O PRECO DE ATACADO SO APARECE NO MODO ATACADO (decisao do dono,
      18/10/2026). O par desta regra e o `gen_produto_html.py`, que troca o
      estilo inline do bloco por esta classe -- sem aquela passada, nenhum
      elemento tem `.ap-atac` e nada aqui vale.

      AS DECLARACOES DE APARENCIA SAO AS MESMAS, AO BYTE: elas estavam no
      atributo `style` e passam a morar aqui, onde se medem. A unica
      declaracao NOVA e o `display`. Nenhuma cor muda -- o #f5f5f3 e o
      `var(--teal)` sao os que ja estavam no inline, entao o contraste do
      texto de dentro e identico ao de hoje. */
.ap-atac{display:none;margin-top:.7rem;padding:.6rem .85rem;background:#f5f5f3;
         border-left:3px solid var(--teal);font-size:.7rem}
html.qv-atacado .ap-atac{display:block}

/* 7. RELACIONADOS -- escrito por gen_produto_relacionados.py.
      Alinha com a `.ap-wrap` (mesmo max-width e mesmo padding lateral), para
      a secao nao parecer de outra pagina. 4 / 3 / 2 colunas; nunca 1, porque
      card de largura inteira no celular vira outra pagina de produto. */
.ap-rel{max-width:1320px;margin:0 auto;padding:0 1.5rem 4rem}
.ap-rel-tit{font-size:1.05rem;font-weight:700;letter-spacing:.06em;
            text-transform:uppercase;color:var(--black);
            margin:0 0 1.1rem;padding-top:2.2rem;
            border-top:1px solid var(--border)}
.ap-rel-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1.4rem}
.ap-rel-card{display:block;text-decoration:none;color:inherit}
.ap-rel-img{aspect-ratio:1;overflow:hidden;background:#f5f5f3;margin-bottom:.6rem}
.ap-rel-img img{width:100%;height:100%;object-fit:cover;display:block;
                transition:transform .4s ease}
.ap-rel-card:hover .ap-rel-img img{transform:scale(1.04)}
.ap-rel-nome{font-size:.76rem;line-height:1.35;color:var(--black);
             margin-bottom:.25rem}
.ap-rel-preco{font-size:.92rem;font-weight:500;color:var(--black)}
/*    O riscado fica em #757575 porque e o piso medido da legibilidade:
      4,61:1 sobre branco, passando os 4,5 por 0,11. Clarear reprovaria. */
.ap-rel-old{font-size:.72rem;color:#757575;text-decoration:line-through;
            font-weight:300;margin-right:.35rem}
@media (max-width:1000px){ .ap-rel-grid{grid-template-columns:repeat(3,1fr);gap:1.1rem} }
@media (max-width:768px){
  .ap-rel{padding:0 1rem 3rem}
  .ap-rel-grid{grid-template-columns:repeat(2,1fr);gap:.9rem}
  .ap-rel-tit{font-size:.95rem;padding-top:1.8rem}
}
/*fim-qivon-produto*/

/*qivon-tema*/
/* NAO editar a mao - catalogo-sync/gen_tema.py */
:root{
  --teal:#63615F;
  --teal-d:#474644;
  --teal-l:#F4F0E8;
  --teal-m:rgba(99,97,95,.10);
  --teal-dk:#8D8B86;
  --g100:#F7F6F4;
  --border:#E4E1DB;
  --shadow-md:0 1px 3px rgba(20,20,20,.07);
}

/*qivon-sem-pix*/
/* 22/10/2026: sem desconto no Pix (decisao do dono).
   A frase "No Pix: R$ X (5% off)" esta embutida em 2.362 paginas;
   esconde-la aqui custa 11 arquivos em vez de 34 MB de leva.
   A linha ainda esta no HTML -- ver docs/CHECKLIST-FINAL.md. */
.ap-price-pix{display:none}

/*qivon-sem-wa*/
/* 22/10/2026: sem "Finalizar no WhatsApp" no carrinho, NO VAREJO
   (decisao do dono). No ATACADO ele continua, porque e o unico
   botao que existe la -- o servidor nao cobra atacado.
   O DOM distingue os dois: no varejo o #payBtns tem um <button>
   ("Comprar agora"); no atacado, so um <div> de aviso.
   O carrinho e embutido nas 1.877 paginas de produto; esconder
   aqui custa 11 arquivos em vez de 105 MB de leva.
   Ver catalogo-sync/gen_sem_whats_carrinho.py */
#payBtns:has(button) + .btn-wa-checkout{display:none}
#payBtns:has(button) ~ .cart-note{display:none}
