.boxInd{
	margin-bottom: var(--space-5, 20px);
	box-shadow: var(--shadow-sm, 0 2px 8px rgba(0,0,0,0.08));
}

/* ── Menu List (estilo moderno) ── */
.menu-list {
	list-style: none;
	margin: 0;
	padding: 0;
}

.menu-list li a {
	display: flex;
	align-items: center;
	gap: var(--space-3, 12px);
	padding: var(--space-3, 12px) var(--space-2, 8px);
	border-radius: var(--radius-sm, 8px);
	text-decoration: none;
	color: var(--text-primary, #18181b);
	font-size: var(--font-md, 15px);
	font-weight: var(--weight-medium, 500);
	cursor: pointer;
	transition: background 0.1s;
}

.menu-list li a:active {
	background: var(--gray-100, #f4f4f5);
}

.menu-icon {
	width: 40px;
	height: 40px;
	border-radius: var(--radius-sm, 8px);
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 16px;
	flex-shrink: 0;
}

.menu-label {
	flex: 1;
}

.menu-arrow {
	font-size: 12px;
	color: var(--gray-300, #d4d4d8);
}

.menu-divider {
	height: 1px;
	background: var(--border-light, #f4f4f5);
	margin: var(--space-2, 8px) 0;
}

/* Legacy — manter para compatibilidade */
.menuConta li{
	list-style: none;
	padding: 0;
	margin-bottom: var(--space-1, 4px);
}

.no-offers-title{
    font-size: 22px !important;
}

.badge {
    background-color: var(--color-error, #EF4444);
    color: #fff;
    font-size: var(--font-xs, 11px);
    font-weight: var(--weight-bold, 700);
    border-radius: var(--radius-full, 50%);
    width: 20px;
    height: 20px;
    line-height: 1;
    position: absolute !important;
    top: 0;
    right: -10px;
    z-index: 10;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
}

.menuConta li:last-child{
	border-bottom: none;
}

.menuConta li a{
	font-size: var(--font-md, 15px);
	color: var(--text-primary, #18181b);
	display: flex;
	align-items: center;
	gap: var(--space-3, 12px);
	padding: var(--space-3, 12px) var(--space-4, 16px);
	border-radius: var(--radius-sm, 8px);
	transition: background var(--transition-normal, 0.2s ease);
	font-weight: var(--weight-medium, 500);
}

.menuConta li a:active{
	background: var(--gray-100, #f4f4f5);
}

.menuConta li a i{
	width: 24px;
	text-align: center;
	color: var(--main-color, #3B82F6);
	font-size: 18px;
}

/* #jornais .contentModal img{
	margin-bottom: 20px;
} */

#listaOfertas{
	width: 100%;
	margin-top: 30px;
	margin-bottom: 100px;
}

#listaOfertas .col-xs-6:nth-child(odd){
	padding-right: var(--space-2, 8px);
	order: 999;
}

#listaOfertas .col-xs-6:nth-child(even){
	padding-left: var(--space-2, 8px);
	order: 999;
}

#listaOfertas .col-xs-6 {
	margin-bottom: var(--space-3, 12px);
}

.atalhosApp{
	position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: 99999999;
    background-color: var(--bg-primary, #fff);
    border-radius: 0;
    border-top: 1px solid var(--border-light, #f4f4f5);
    padding: 0;
    padding-bottom: env(safe-area-inset-bottom, 0);
    box-shadow: 0 -4px 20px rgba(0,0,0,0.08);
}

.atalhosApp ul{
	display: flex;
	justify-content: space-around;
	align-items: center;
	height: var(--bottom-nav-height, 56px);
	margin: 0;
	padding: 0;
}

.atalhosApp ul li {
    position: relative;
    list-style: none;
}

.atalhosApp ul li{
	display: flex;
	flex-direction: column;
	align-items: center;
	padding: var(--space-2, 8px) var(--space-3, 12px);
	min-width: var(--touch-target, 44px);
	min-height: var(--touch-target, 44px);
	justify-content: center;
}

.atalhosApp ul li a{
	font-size: 10px;
	font-weight: var(--weight-medium, 500);
	color: var(--gray-400, #a1a1aa);
	display: flex;
	flex-direction: column;
	align-items: center;
}

.atalhosApp ul li a{
	font-size: 10px;
	font-weight: var(--weight-medium, 500);
	color: var(--gray-400, #a1a1aa);
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 3px;
	text-decoration: none;
	transition: color 0.2s ease;
	height: 100%;
}

.atalhosApp ul li a i{
	font-size: 20px;
	color: inherit;
	transition: color 0.2s ease;
}

/* Cores únicas por item da bottom nav */
.atalhosApp ul li:nth-child(1) a { color: var(--main-color, #3B82F6); } /* Ofertas */
.atalhosApp ul li:nth-child(2) a { color: var(--gray-500, #71717a); } /* Buscar */
.atalhosApp ul li:nth-child(3) a { color: var(--gray-500, #71717a); } /* Carrinho */
.atalhosApp ul li:nth-child(4) a { color: var(--gray-500, #71717a); } /* Encartes */
.atalhosApp ul li:nth-child(5) a { color: var(--gray-500, #71717a); } /* Perfil */

/* Item ativo — cor da marca com fundo pill sutil */
.atalhosApp ul li.active a{
	color: var(--main-color, #3B82F6) !important;
	font-weight: var(--weight-semibold, 600);
}

.atalhosApp ul li a span{
	font-size: 10px;
	line-height: 1.2;
	margin-top: 1px;
}

/* Badge */
.atalhosApp .badge{
	position: absolute;
	top: -2px;
	right: -6px;
	min-width: 18px;
	height: 18px;
	border-radius: 9px;
	background: var(--color-error, #EF4444);
	color: #fff;
	font-size: 10px;
	font-weight: var(--weight-bold, 700);
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 0 4px;
	line-height: 1;
	border: 2px solid var(--bg-primary, #fff);
}

.blocoOfertaApp {
    padding: 10px;
    position: relative;
    background-color: white;
    border-radius: var(--radius-md, 12px);
    box-shadow: var(--shadow-sm, 0 2px 8px rgba(0,0,0,0.08));
    margin-bottom: var(--space-3, 12px);
    height: calc(100% - 12px);
    transition: transform var(--transition-fast, 0.1s ease), box-shadow var(--transition-fast, 0.1s ease);
}

.blocoOfertaApp:active {
    transform: scale(0.98);
    box-shadow: var(--shadow-xs, 0 1px 2px rgba(0,0,0,0.05));
}

.blocoOfertaApp .economia{
	margin: 0;
	width: calc(100% + 20px);
	border-radius: var(--radius-md, 12px) var(--radius-md, 12px) 0 0;
	background-color: #D1FAE5;
	color: #065F46;
	text-align: center;
	font-size: var(--font-sm, 13px);
	padding: var(--space-2, 8px);
	font-weight: var(--weight-semibold, 600);
	margin-top: -10px;
	margin-left: -10px;
	margin-right: -10px;
}

.blocoOfertaApp .imagemOferta{
	width: 100%;
	height: 180px;
	display: flex;
	justify-content: center;
	align-items: center;

    background-color: var(--bg-primary, #fff);
    border-radius: var(--radius-sm, 8px);
    padding: var(--space-3, 12px);
    margin-top: var(--space-3, 12px);
}

.blocoOfertaApp .imagemOferta img{
	width: auto;
	height: auto;
	max-height: 150px;
}

.nomeOferta {
    /* color: #4c4c4c;
    text-align: left;
    margin: 10px 0;
    font-size: 18px;
    line-height: 22px;
    height: auto;
    display: flex;
    justify-content: flex-start;
    align-items: center;
    flex-direction: column;
    min-height: 50px;
    margin-top: 15px; */
    font-weight: 500;
    font-size: 14px;
    margin-bottom: 4px;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* .nomeOferta span{
	font-size: 14px;
} */

.precoOferta{
	display: flex;
	align-items: center;
	/* justify-content: center; */
}

.precoOferta span{
    font-size: var(--font-md, 15px);
    font-weight: var(--weight-bold, 700);
    color: var(--color-success, #059669);
}

.precoOferta del{
    font-size: var(--font-md, 15px);
    color: var(--text-muted, #9ca3af);
    text-decoration: line-through;
    font-weight: var(--weight-regular, 400);
    margin-right: var(--space-1, 4px);
}

body{
	background-color: var(--bg-secondary, #fafafa);
	color: var(--text-primary, #18181b);
}

.boxCashback{
	box-shadow: var(--shadow-sm, 0 2px 8px rgba(0,0,0,0.08));
	border-radius: var(--radius-md, 12px);
}

.headApp{
	width: 100%;
	height: 300px;
	display: flex;
	justify-content: center;
	align-items: flex-start;
	margin: 0 !important;
}

.headApp .logo{
	max-width: 150px;
    max-height: 150px;
    margin-top: var(--space-5, 20px);
    background-color: #fff;
    border-radius: var(--radius-md, 12px);
    box-shadow: var(--shadow-sm, 0 2px 8px rgba(0,0,0,0.08));
	z-index: 1;
}

.headApp .logo img{
	border-radius: var(--radius-md, 12px);
}

#infosCliente{
    padding: 0 0 var(--space-3, 12px) 0;
    margin-left: calc(var(--page-padding, 20px) * -1);
    margin-right: calc(var(--page-padding, 20px) * -1);
    margin-bottom: var(--space-2, 8px);
}

/* Scroll-snap para cards info */
#infosCliente .slick-track,
#infosCliente .scroll-snap-x {
    scroll-snap-type: x mandatory;
}

#infosCliente .slick-slide,
#infosCliente .item {
    scroll-snap-align: start;
}

.slick-slider {
    margin:0 -5px;
}

.slick-slide {
    margin-right:5px;
    margin-left:5px;
}

.infosCliente{
	margin-top: -80px;
	z-index: 2;
	position: relative;
}

.infosCliente .container-fluid > p{
	font-size: 14px;
	font-weight: bold;
	color: white;
	margin: 0;
	padding-left: 10px;
}

.blocoInfosCliente{
	background-color: var(--bg-primary, #fff);
	color: var(--text-primary, #18181b);
	border-radius: var(--radius-md, 12px);
	padding: var(--space-3, 12px);
	box-shadow: var(--shadow-sm, 0 2px 8px rgba(0,0,0,0.08));
}

.blocoInfosCliente > p{
	color: gray;
	font-size: 12px;
	line-height: 16px;
	margin-top: 0;
	margin-bottom: 10px;
}

.cronometro {
    position: relative;
    top: -10px;
    margin-top: 5px;
}

@media screen and (max-width: 900px) {
    .cronometro {
        position: relative;
        top: -10px;
        margin-top: 5px;
    }
}

.blocoInfosCliente > p i{
	color: #4c4c4c;
	font-size: 14px;
	margin-right: 2px;
}

.loading{
	color: #4c4c4c;
}

.valorInfos{
	display: flex;
    align-items: center;
    justify-content: center;
	padding-bottom: 10px;
}

.valorInfos span{
	font-size: 16px;
	font-weight: bold;
	margin-right: 5px;
	color: #4c4c4c;
}

.valorInfos span:not(.bigValue){
	line-height: 24px;
}

.valorInfos .bigValue{
	font-size: 36px;
	line-height: 40px;
	font-weight: bold;
	margin-right: 0;
}



.blocoFilter{
	box-shadow: var(--shadow-sm, 0 2px 8px rgba(0,0,0,0.08));
	border-radius: var(--radius-md, 12px);
}

.relatorioHistorico .item,
.boxGetCupom{
	margin-bottom: var(--space-5, 20px);
	box-shadow: var(--shadow-sm, 0 2px 8px rgba(0,0,0,0.08));
	padding: var(--space-3, 12px);
	border-radius: var(--radius-md, 12px);
	background-color: var(--bg-primary, #fff);
	color: var(--text-primary, #18181b);
}

#indicados .relatorioHistorico .item{
	margin-bottom: 10px;
	padding: 20px;
}

.dataRelatorio{
	margin: 0;
    font-size: 12px;
    color: #4c4c4c;
}

.infoRelatorio{
	display: flex;
    justify-content: space-between;
    align-items: center;
}

.infoRelatorio p:first-child{
	font-weight: bold;
    margin: 0;
    font-size: 26px;
	margin-top: 20px;
    color: green;
}

.infoRelatorio p:last-child{
	display: flex;
    flex-direction: column;
    margin: 0;
    transform: translateY(calc(-50% + 10px));
}

.infoRelatorio p:last-child del{
	text-decoration: line-through;
    font-size: 13px;
    text-align: right;
}

.infoRelatorio p:last-child span{
	color: green;
	font-weight: bold;
	margin-top: -5px;
	font-size: 20px;
}

.linkRelatorio{
	text-align: right;
    margin: 0;
    font-size: 14px;
    color: #4c4c4c;
}

#cupons .ativo{
	background-color: #f2fff0;
    border-bottom: none;
}

#cupons .inativo{
	background-color: #fff4f4;
    border-bottom: none;
}

.boxGetCupom span{
	font-size: var(--font-md, 15px);
    color: var(--text-secondary, #52525b);
    line-height: var(--leading-normal, 1.5);
}

.boxGetCupom .valorDisponivel{
	font-weight: var(--weight-bold, 700);
    margin: 0;
    font-size: var(--font-2xl, 24px);
    margin-top: var(--space-2, 8px);
    color: var(--color-success, #10b981);
    line-height: var(--leading-tight, 1.2);
}

.saque p{
	font-size: 14px;
    color: #4c4c4c;
    margin-bottom: 0;
}

.saque a{
	margin-top: 20px;
	margin-bottom: 0;
}

.boxGetCupom{
	padding: var(--space-4, 16px);
	background: var(--bg-primary, #fff);
	color: var(--text-primary, #18181b);
	border: 1px solid var(--border-light, #f4f4f5);
	border-radius: var(--radius-md, 12px);
	box-shadow: var(--shadow-sm, 0 2px 8px rgba(0,0,0,0.08));
	display: flex;
	flex-direction: column;
	gap: var(--space-2, 8px);
}

.saque a i{
	margin-right: 10px;
}

.info-loja{
	text-align: center;
    font-size: 12px;
    margin: 0 auto;
    display: inherit;
    color: #444;
}

@keyframes fade-in {
	0% {
	  opacity: 0;
	}
	100% {
	  opacity: 1;
	}
  }



@media(min-width: 769px){
	#infosCliente{
		padding: 10px 10px;
	}
	#jornais .contentModal img{
		max-width: 450px;
	}
}

.tableOpcoes table{
	min-height: auto !important;
	border: none !important;
    margin: 10px 0 0 0;
}

.tableOpcoes table del{
	text-decoration: line-through;
	text-decoration: line-through;
    font-size: 12px !important;
    margin-right: 5px;
}

/* .tableOpcoes table td{
	display: flex;
    justify-content: space-between;
} */

.tableOpcoes table tbody{
	border-radius: 10px;
}

.tableOpcoes table {
  width: 100%; /* Certifique-se de que a tabela use toda a largura disponível */
  max-width: 100%;
}

.tableOpcoes table th, table td {
	width: 65%; /* Define cada célula para ocupar 50% da largura da tabela */
	padding: 5px 10px !important;
    text-align: center;
}

.tableOpcoes span{
	font-size: 14px;
}

.tableOpcoes{
	width: 100%;
}

.blocoOfertaApp{
	cursor: pointer;
}

.ver-opcoes {
    background: white;
    color: #4c4c4c;
    margin: 0 auto;
    border: none;
    cursor: pointer;
    display: block;
    text-decoration: underline;
    margin-bottom: 10px;
}


@media(max-width: 440px){
	#modalProduto .box{
		width: 100% !important;
	}
    .nomeOferta {
        /* min-height: 80px; */
        font-size: 14px;
        font-weight: 600;
        line-height: 18px;
    }
}

@media(max-width: 1359px){
	#bannerRotate .item img {
		height: 162px !important;
	}
}

.btn-up {
    position: fixed;
    bottom: calc(var(--bottom-nav-height, 56px) + var(--space-10, 40px));
    right: var(--space-5, 20px);
    width: var(--touch-target, 44px);
    height: var(--touch-target, 44px);
    background-color: var(--main-color, #3B82F6);
    color: #fff;
    border: none;
    border-radius: var(--radius-full, 50%);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 20px;
    box-shadow: var(--shadow-md, 0 4px 12px rgba(0, 0, 0, 0.08));
    cursor: pointer;
    z-index: var(--z-sticky, 100);
    opacity: 0;
    transition: opacity var(--transition-slow, 0.3s ease), transform var(--transition-fast, 0.1s ease);
}

.btn-up:active {
    transform: scale(0.95);
}

.btn-up.show{
    opacity: 1;
    transition: 0.3s all;
}

/* Esconder btn-up quando modal está aberto */
body.modal-open .btn-up,
body.modal__actived .btn-up {
    opacity: 0 !important;
    pointer-events: none;
}

.bannersRotate .slick-dots{
    display: none !important;
}

.bannersRotate {
    width: 100%;
    margin: 0 auto;
    padding: 0 5px;
    box-sizing: border-box;
	margin-bottom: 20px;
}

#bannerRotate .slick-slide{
  margin: 0 !important
}

.bannersRotate .slick-next{
  right: -10px !important
}

.bannersRotate .slick-prev{
  left: -10px !important
}

/* v4.77.55 — Banner rotativo: reserva altura ANTES da imagem carregar.
   Antes: slick com adaptiveHeight media .item no init quando img.height
   ainda era 0 (imagens não carregadas) — primeiro slide ficava com
   height:0 e só ganhava altura ao trocar de slide. Fix: aspect-ratio
   fixo no .banner-container e min-height no slick-track/.item pra
   garantir altura reservada desde o 1º paint. */
#bannerRotate,
#bannerRotate .slick-list,
#bannerRotate .slick-track {
    min-height: 160px;
}

#bannerRotate .item {
    display: flex !important;
    justify-content: center;
    align-items: center;
    padding: 0;
    margin: 0;
    min-height: 160px;
}

#bannerRotate .item img {
    width: 100%;
    height: auto;
    max-height: 280px;
    display: block;
    object-fit: cover;
    border-radius: var(--radius-md, 12px);
}

.banner-container {
    position: relative;
    width: 100%;
    aspect-ratio: 16 / 7; /* reserva proporção mesmo sem img carregada */
    border-radius: var(--radius-md, 12px);
    overflow: hidden;
    background: var(--bg-secondary, #fafafa);
}

.banner-container a {
    display: block;
    width: 100%;
    height: 100%;
}

.banner-container img {
    width: 100%;
    height: 100%;
    max-width: 100%;
    max-height: 100%;
    object-fit: cover;
    border-radius: var(--radius-md, 12px);
    display: block;
}

.bannersRotate {
    position: relative;
}

.banner-actions button {
    margin: 0 2px;
}
.banner-actions {
    position: absolute;
    top: 10px;
    right: 10px;
    display: flex;
    gap: 6px;
    z-index: 10;
}

@keyframes pulse {
	0% { opacity: 1; }
	50% { opacity: 0.4; }
	100% { opacity: 1; }
}
.sortable-ghost {
	opacity: 0.3;
	transform: scale(0.98);
}

.sortable-chosen {
	background: var(--gray-100, #f4f4f5);
	box-shadow: var(--shadow-md, 0 4px 12px rgba(0,0,0,0.08));
}

.sortable-drag {
	opacity: 0.7;
	cursor: grabbing !important;
}
.sortable-circles {
	margin: 15px;
}
.sortable-placeholder {
	border: 2px dashed #ccc;
	width: 100px;
	height: 100px;
	border-radius: 50%;
	background-color: #f3f3f3;
}

.form-check{
	margin: 5px 0px 5px;
}

.form-check-input[type=checkbox]{
	position: relative;
}

.data-swail
{
	position: relative;
	right: -20px;
	margin: 5px 0px 0px 0px;
}

.white-space{
	height: 40px;
}

#stickySection {
    position: relative;
    z-index: 8;
    padding: 0;
    transition: all 0.2s ease;
    max-width: 100%;
    display: flex;
    overflow: hidden;
    margin-bottom: 5px;
}

.sectionInfos {
    /* padding: 10px 0; */
}

.sectionValue {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 16px;
}

.wrap-container {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    gap: 16px;
}

.sectionBlock {
    flex: 0 0 auto;
    width: 80px;
    display: flex;
    justify-content: center;
    align-items: center;
}

.categories-flex {
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
    flex: 1;
}

.sectionCircle {
    width: 80px;
    flex: 0 0 auto;
    text-align: center;
}


.sectionBlock {
    flex: 0 0 auto;
    width: 80px;
    display: flex;
    justify-content: center;
    align-items: center;
}

#categoriesArea {
    width: 100%;
    display: flex;
    flex-wrap: nowrap;
    padding-bottom: 40px;
    position: relative;
    user-select: none;
    overflow-x: auto;
    overflow-y: hidden;
    scrollbar-width: none;
    -ms-overflow-style: none;
    padding-left: var(--space-3, 12px);
    gap: var(--space-2, 8px);
    -webkit-overflow-scrolling: touch;
}


#categoriesArea::-webkit-scrollbar {
    display: none;
}


#section{
    width: 100%;
}

.sectionCircle {
    width: 80px;
    flex: 0 0 auto;
    text-align: center;
}

.sectionValue {
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
    padding-top: 10px;
}


.sectionBlock img {
    width: 100%;
    border-radius: var(--radius-sm, 8px);
    box-shadow: var(--shadow-xs, 0 1px 2px rgba(0, 0, 0, 0.05));
}

.sectionBlock p{
    padding: inherit;
    position: relative;
    top: 50px;
}
.sectionBlock {
  width: 120px;
  height: 120px;
  border: 2px dotted var(--border-default, #e4e4e7);
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  background-color: var(--bg-tertiary, #f4f4f5);
  color: var(--text-primary, #18181b);
  border-radius: var(--radius-full, 50%);
}

.sectionContent {
    margin-bottom: 20px;
    height: auto;
    width: 100%;
    flex-wrap: wrap;
    padding: 0;
}

.individual {
    padding: 0 5px !important;
}

.slick-track .individual {
    padding: 0 !important;
}

.sectionCircle {
  width: 80px;
  height: 80px;
  border-radius: var(--radius-full, 50%);
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: var(--shadow-xs, 0 1px 2px rgba(0, 0, 0, 0.05));
  background-color: var(--bg-primary, #fff);
  color: var(--text-primary, #18181b);
}

.sectionCircle .circleWrapper {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    overflow: hidden;
    margin: 0 auto;
    align-items: center;
    justify-content: center;
    padding: 5px;
}

.sectionCircle .circleWrapper img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.sectionCircle {
    display: inline-block;
    text-align: center;
    margin: 0px;
}

.circleWrapper {
    width: 100px;
    height: 100px;

    border-radius: 50%;
    overflow: hidden;
    margin: 0 auto;
}

.circleWrapper img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.sectionTitle {
    font-size: var(--font-sm, 13px);
    font-weight: var(--weight-semibold, 600);
    color: var(--text-primary, #18181b);
    margin-top: var(--space-1, 4px);
}


.categoryBlock {
    height: 50px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    margin-right: 20px;
  }

.categoryBlock img.category-thumb {
    width: 100%;
    height: 90%;
    object-fit: cover;
    border-radius: 5%;
    margin-bottom: 0px;
}

.categoryBlock span {
  color: #555;
  font-size: 2.85rem;
  font-weight: bold;
}


#productsArea.row{
    flex-wrap: wrap;
    margin: auto;
}
.section-title {
    font-size: var(--font-xl, 20px) !important;
    font-weight: var(--weight-bold, 700) !important;
    color: var(--text-primary, #18181b) !important;
    margin-bottom: var(--space-3, 12px) !important;
    margin-top: var(--space-8, 32px) !important;
    text-align: left !important;
    line-height: 1.4 !important;
    padding: var(--space-2, 8px) 0 !important;
    width: 100% !important;
    overflow: visible !important;
    white-space: normal !important;
    display: block !important;
    min-height: 32px !important;
    clear: both !important;
}

.sectionContent > .section-header .section-title {
    margin: 0 !important;
    padding: 0 !important;
    min-height: 0 !important;
    width: auto !important;
}

.sectionContent > .section-header {
    padding: 10px 0;
}

.row-sectionProdutos {
    display: flex;
    width: 100%;
    margin: 0 !important;
    overflow: visible;
}
.row-sectionProdutos > [class*='col-'] {
    display: block;
}
.filter__page{
	position: fixed;
    top: var(--header-height, 56px);
    right: 0;
    width: 100%;
    height: calc(100% - var(--header-height, 56px));
	z-index: var(--z-modal, 400);
	display: none;
}

.filter__page.actived{
	display: block;
	animation: filterSlideIn 0.2s ease forwards;
}

@keyframes filterSlideIn {
	from { transform: translateX(30px); opacity: 0.5; }
	to { transform: translateX(0); opacity: 1; }
}

.filter__page .container__filter__page{
	box-sizing: border-box;
    display: flex;
    flex-direction: column;
    width: 100%;
    background: var(--bg-primary, #fff);
    height: 100%;
	/* v4.77.46: padding zerado aqui — quem tem padding é o .body__filter__page
	   (regra em main.css do shim canônico). Isto evita double-padding ao
	   abrir o modal e permite .headModal ficar colada no topo.
	   v4.77.65: !important pra vencer shims legados que ainda injetam padding. */
	padding: 0 !important;
	overflow-y: auto;
	-webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    -ms-overflow-style: none;
}

.filter__page .container__filter__page::-webkit-scrollbar {
    display: none;
}
.filter__page.actived .container__filter__page::-webkit-scrollbar {
    display: none;
}
.head__filter__Page{
	display: flex;
	align-items: center;
	justify-content: flex-end;
	padding: 0;
	margin: 0;
	height: auto;
}

.head__filter__Page h2{
	display: none;
}

/* ── Search Row (busca + filtro + fechar na mesma linha) ── */

.search-row {
    display: flex;
    align-items: center;
    gap: var(--space-2, 8px);
    margin-bottom: var(--space-4, 16px);
}

.search-row .box__search {
    flex: 1;
    position: relative;
}

.search-row .box__search .form-control {
    padding-right: 40px;
}

.search-row-icon {
    position: absolute;
    right: 14px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--gray-400, #a1a1aa);
    font-size: 16px;
    pointer-events: none;
}

.search-row-btn {
    width: var(--touch-target, 44px);
    height: var(--touch-target, 44px);
    border: 1px solid var(--border-default, #e4e4e7);
    border-radius: var(--radius-sm, 8px);
    background: var(--bg-primary, #fff);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    flex-shrink: 0;
    color: var(--text-secondary, #52525b);
    font-size: 16px;
}

.search-row-btn:active {
    background: var(--gray-100, #f4f4f5);
}

.search-row-close {
    width: var(--touch-target, 44px);
    height: var(--touch-target, 44px);
    border: none;
    background: none;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    color: var(--text-secondary, #52525b);
    font-size: 20px;
}

.search-row-close:active {
    opacity: 0.6;
}

.search-row-admin {
    flex-shrink: 0;
}

/* Skeleton no modal de busca */
.search-skeleton-card {
    border-radius: var(--radius-md, 12px);
    padding: 10px;
}

.search-skeleton-image {
    height: 140px;
    margin-bottom: 8px;
    border-radius: var(--radius-sm, 8px);
}

.filter__page .body__filter__page{
	padding-top: var(--space-2, 8px);
}
.body__filter__page{
	height: 100%;
}
.body__filter__page h3{
	font-size: var(--font-lg, 17px);
    line-height: var(--leading-tight, 1.2);
    color: var(--text-primary, #18181b);
    font-weight: var(--weight-bold, 700);
	margin-bottom: var(--space-4, 16px);
}
.body__filter__page h3 ~ p,
.body__filter__page label,
.body__filter__page h4{
	font-size: var(--font-sm, 13px);
    line-height: var(--leading-normal, 1.5);
    font-weight: var(--weight-semibold, 600) !important;
    color: var(--text-secondary, #52525b);
	margin-bottom: var(--space-2, 8px);
}
.container__option__filter{
	display: flex;
	align-items: center;
	margin: 0 20px 20px 0
}

.container__modal__filter{
	display: flex;
	align-items: center;
	margin: 0 20px 20px 0
}

.option__filter__group{
	display: none;
	align-items: flex-start;
	margin: 0 0 10px 0;
}
.type__filter{
	display: flex;
}

.option__filter__group.actived{
	display: flex;
}
.item__option__filter__group{
	margin: 0 var(--space-2, 8px) var(--space-2, 8px) 0;
	cursor: pointer;
    transition: background var(--transition-fast, 0.1s), border-color var(--transition-fast, 0.1s);
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-2, 8px);
    min-height: var(--touch-target, 44px);
    width: fit-content;
    color: var(--text-primary, #18181b);
    background: var(--bg-primary, #fff);
    border: 1px solid var(--border-default, #e4e4e7);
    border-radius: var(--radius-full, 9999px);
    padding: var(--space-2, 8px) var(--space-3, 12px);
    font-size: var(--font-sm, 13px);
    font-weight: var(--weight-medium, 500);
}

.item__option__filter__group:active,
.item__option__filter__group.selected{
    background: color-mix(in srgb, var(--main-color, #3B82F6) 10%, var(--bg-primary, #fff));
    border-color: var(--main-color, #3B82F6);
    color: var(--main-color, #3B82F6);
}
.foot__filter__page{
	display: flex;
	justify-content: flex-end;
	gap: var(--space-2, 8px);
	padding-top: var(--space-3, 12px);
	border-top: 1px solid var(--border-light, #f4f4f5);
	margin-top: var(--space-3, 12px);
}
.foot__filter__page .btn__default,
.foot__filter__page .btn__default.full{
	margin-left: 0;
	min-height: 48px;
	border-radius: var(--radius-md, 12px);
}
.foot__filter__page .btn__default.full{
	flex: 1;
}

.foot__modal__page .btn__default.full{
	margin-left: 20px;
}

.body__filter__page select,
.body__filter__page select:focus{
	border: 1px solid var(--border-default, #e4e4e7) !important;
	border-radius: var(--radius-md, 12px) !important;
    padding: var(--space-3, 12px) var(--space-4, 16px) !important;
	color: var(--text-primary, #18181b) !important;
    background: var(--bg-primary, #fff) !important;
    font-size: var(--font-sm, 13px) !important;
    min-height: var(--touch-target, 44px) !important;
}

.body__filter__page select:focus{
    border-color: var(--main-color, #3B82F6) !important;
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--main-color, #3B82F6) 20%, transparent) !important;
}
.search__filter{
    overflow: hidden;
    background-color: rgb(255, 255, 255);
    padding: 20px;
	border-radius: 6px 6px 0px 0px;
}

.search__filter input{
	font-size: 16px;
    line-height: 24px;
    color: rgb(62, 62, 62);
    flex-grow: 1;
    width: 100%;
    padding: 10px;
	margin-top: 10px;
	background-color: white !important;
    border-bottom: 1px solid rgb(220, 220, 220) !important;
    border-radius: 0 !important;
}

.ver-mais-btn {
    margin-left: 10px !important;
    margin-right: 0 !important;
    padding: 6px 14px !important;
    font-size: var(--font-xs, 11px) !important;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 32px;
    border-radius: var(--radius-sm, 8px);
    font-weight: var(--weight-medium, 500);
}

.seta-btn {
    position: absolute;
    top: 50%;
    left: 15%;
    transform: translateY(-50%);
    background-color: white;
    border: 2px solid #007bff;
    border-radius: 50%;
    padding: 8px 12px;
    font-size: 16px;
    cursor: pointer;
    z-index: 0;
    transition: all 0.2s ease;
}

.seta-btn:hover {
    background-color: #007bff;
    color: white;
}


.seta-btn-grid {
    position: relative;
    transform: translateY(15%);
    background-color: white;
    border: 2px solid #007bff;
    border-radius: 50%;
    padding: 8px 12px;
    font-size: 16px;
    cursor: pointer;
    bottom: 10px;
    z-index: 0;
    transition: all 0.2s ease;
}

.seta-btn-grid:hover {
    background-color: #007bff;
    color: white;
}
.dynamic-hover:hover {
    background-color: var(--primary-color);
    color: #fff !important;
    border-color: var(--primary-color);
}

.btn-seta-perto {
    margin-left: -20px;
}

.btn-seta-longe {
    margin-left: 10px;
}

/* ── Bloco de loja (lista em #listaLojas / modal Lojas) ─── */
.bloco-loja {
    position: relative;
    cursor: pointer;
    padding: var(--space-3, 12px);
    border: 1px solid var(--border-light, #f4f4f5);
    border-radius: var(--radius-md, 12px);
    background: var(--bg-primary, #fff);
    margin-bottom: var(--space-2, 8px);
    transition: border-color .2s ease, background-color .2s ease, box-shadow .2s ease;
}

.bloco-loja:active {
    background: var(--bg-secondary, #fafafa);
}

.bloco-loja__check {
    position: absolute;
    top: var(--space-3, 12px);
    right: var(--space-3, 12px);
    width: 22px;
    height: 22px;
    border-radius: var(--radius-full, 999px);
    background: transparent;
    border: 1.5px solid var(--border-medium, #d4d4d8);
    display: flex;
    align-items: center;
    justify-content: center;
    color: transparent;
    font-size: 11px;
    transition: background .2s ease, border-color .2s ease, color .2s ease;
}

.bloco-loja__endereco {
    margin: 0;
    padding-right: 32px; /* dá espaço pro check */
    font-size: var(--font-sm, 13px);
    font-weight: var(--weight-medium, 500);
    color: var(--text-primary, #18181b);
    line-height: var(--leading-tight, 1.3);
}

.bloco-loja__distancia {
    margin: var(--space-1, 4px) 0 0;
    font-size: var(--font-xs, 11px);
    font-weight: var(--weight-medium, 500);
    color: var(--text-muted, #71717a);
    display: inline-flex;
    align-items: center;
    gap: 4px;
}

.bloco-loja .mapa-loja {
    margin-top: var(--space-2, 8px);
    border-radius: var(--radius-sm, 8px);
    overflow: hidden;
}

.bloco-loja .mapa-loja iframe {
    display: block;
    border: 0;
}

/* Estado: selecionada (loja ativa) — visual explícito */
.bloco-loja.selecionada {
    border-color: var(--main-color, #3B82F6) !important;
    background-color: color-mix(in srgb, var(--main-color, #3B82F6) 6%, transparent) !important;
    box-shadow: 0 0 0 1px var(--main-color, #3B82F6);
}

.bloco-loja.selecionada .bloco-loja__check {
    background: var(--main-color, #3B82F6);
    border-color: var(--main-color, #3B82F6);
    color: #fff;
}

/* Container #listaLojas — reduz gap/padding */
#listaLojas {
    display: flex;
    flex-direction: column;
    gap: var(--space-2, 8px);
    padding: 0;
    margin: 0;
}

#listaLojas .bloco-loja {
    margin-bottom: 0;
}

.sectionCircle.selecionado {
    border: 2px solid var(--main-color, #3B82F6);
    background-color: color-mix(in srgb, var(--main-color, #3B82F6) 8%, transparent);
}

.sectionCircle.selecionado .circleWrapper {
    box-shadow: 0 0 8px var(--main-color, #3B82F6);
}

.scroll-to-section {
    all: unset;
    display: block;
    width: 100%;
    height: 100%;
    cursor: pointer;
    position: relative;
}

.scroll-to-section.selecionado::after {
    content: "\f00c";
    font-family: 'Font Awesome 6 Free';
    font-weight: 900;
    color: white;
    position: absolute;
    font-size: 24px;
    background: #fff;
    border-radius: 50%;
    padding: 4px;
    box-shadow: 0 0 5px rgba(0, 0, 0, 0.2);
    pointer-events: none;
    animation: pulsar 1.5s infinite;
    background: rgba(0, 0, 0, 0.6);
    width: 100%;
    height: 100%;
    left: 0;
    top: 0;
    display: flex;
    justify-content: center;
    align-items: center;
}

@keyframes pulsar {
    0% { opacity: 1; transform: scale(1);}
    50% { opacity: 0.7; transform: scale(1.1);}
    100% { opacity: 1; transform: scale(1);}
}

.nascimento label{
    margin-bottom: 5px;
}

.slick-slide.col-lg-3{
    padding: 0 !important
}

#addCart{
    font-size: 12px !important;
    margin: 15px;
}

.modal#notificacao .contentModal {
    padding: 20px 20px 0px 20px !important;
}

.copied-tooltip {
	position: absolute;
	top: -30px;
	right: 0;
	background-color: var(--color-success, #059669);
	color: #fff;
	padding: var(--space-1, 4px) var(--space-3, 12px);
	border-radius: var(--radius-sm, 8px);
	font-size: var(--font-xs, 11px);
	opacity: 0;
	pointer-events: none;
	transition: opacity var(--transition-slow, 0.3s ease);
	white-space: nowrap;
	box-shadow: var(--shadow-sm, 0 2px 8px rgba(0,0,0,0.08));
}

.copied-tooltip.show {
	opacity: 1;
}
.input-group-text.eye {
    background: white;
    border: white;
}
.tableOpcoes tr{
    font-size: 12px;
}

.disabled {
    background-color: #e9ecef !important;
    opacity: 1;
    color: #495057;
}

.quantidadeLimite{
    background: lightgoldenrodyellow;
    font-weight: 700;
    font-size: 1.5rem;
}

.publico-alvo {
    font-size: 1.1rem;
    font-weight: 500;
}

#listaProdutos{
    overflow-y: hidden;
    padding: var(--space-3, 12px) var(--space-3, 12px) 75px var(--space-3, 12px);
}

/* v4.77.67 — Modal #busca: grid 2 colunas CSS (display:grid)
   ---------------------------------------------------------------------
   Motivo do grid em vez de flex: o JS em logged-in/main.js:319
   cria um wrapper `<div class="row">` DENTRO do #listaProdutos e
   injeta as cols lá. O skeleton (modal-all-products.php:60) também
   é um `<div class="row">` com 6 cols filhas diretas. Com flex
   anterior, o wrapper `.row` capturava o flex (1 filho = 1 linha
   = altura colapsada) e os cards ficavam mal distribuídos.
   Grid resolve ambos os casos em 1 regra: o .row fica com altura
   natural do conteúdo e as cols netas se organizam por display:contents.
   =================================================================== */

/* Container do skeleton e lista: grid direto; se houver wrapper .row
   interno (caso do #listaProdutos), ele vira display:contents e as cols
   viram filhos de grid efetivos.
   v4.99.x — Ver mais em seção: o HTML vem com wrapper .sectionContent
   e .row.row-sectionProdutos aninhado (não filho direto). Adicionadas
   variantes com .row-sectionProdutos pra o grid alcançar as cols. */
article.filter__page#busca #listaProdutos,
article.filter__page#busca #searchSkeleton,
article.filter__page#busca #listaProdutos > .row,
article.filter__page#busca #searchSkeleton > .row,
article.filter__page#busca #listaProdutos .row-sectionProdutos {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--space-3, 12px);
    padding: 0;
    margin: 0 !important;
    width: 100%;
    box-sizing: border-box;
    align-items: stretch !important;
    justify-items: stretch !important;
    /* Zera gutters do .row do Bootstrap 5 */
    --bs-gutter-x: 0 !important;
    --bs-gutter-y: 0 !important;
}

/* Padding lateral fica no body (não no grid) pra alinhar com search-row */
article.filter__page#busca #listaProdutos,
article.filter__page#busca #searchSkeleton {
    padding: var(--space-3, 12px);
}

/* Quando há wrapper .row ou .sectionContent interno, o grid externo não
   aplica (vira flow normal) e o container interno vira o grid real. */
article.filter__page#busca #listaProdutos:has(> .row),
article.filter__page#busca #searchSkeleton:has(> .row),
article.filter__page#busca #listaProdutos:has(> .sectionContent) {
    display: block;
    padding: var(--space-3, 12px);
}
article.filter__page#busca #listaProdutos > .row,
article.filter__page#busca #searchSkeleton > .row {
    padding: 0;
}

/* Título da seção dentro do modal ver-mais: espaço entre cabeçalho e grid */
article.filter__page#busca #listaProdutos > .sectionContent > .section-header {
    margin-bottom: var(--space-3, 12px);
}

/* Hide explícito do skeleton quando JS seta display:none inline. */
article.filter__page#busca #searchSkeleton[style*="display: none"],
article.filter__page#busca #searchSkeleton[style*="display:none"] {
    display: none !important;
}

/* Cols ocupam 100% da célula do grid (1 col por célula, sem restos).
   !important no margin zera qualquer `mb-3` / `mb-*` que o JS ou PHP
   tenham adicionado na classe da col — o gap do grid já cobre isso. */
article.filter__page#busca #listaProdutos [class*="col"],
article.filter__page#busca #searchSkeleton [class*="col"] {
    width: 100% !important;
    max-width: 100% !important;
    flex: none !important;
    min-width: 0 !important;
    padding: 0 !important;
    margin: 0 !important;
    margin-bottom: 0 !important;
    box-sizing: border-box !important;
}

/* Skeleton cards com altura proporcional (evita cards de 400px esticando) */
article.filter__page#busca #searchSkeleton .search-skeleton-card {
    min-height: 220px;
}
article.filter__page#busca #searchSkeleton .search-skeleton-image {
    aspect-ratio: 1 / 1;
    height: auto;
    max-height: 140px;
}

/* =====================================================================
   v4.77.66 — Reestruturação visual do modal #busca
   ---------------------------------------------------------------------
   Cards ficavam gigantes porque herdavam padding/espaçamento das regras
   gerais do grid de ofertas (/ofertas). No modal de busca (2 colunas
   estreitas) isso vira whitespace absurdo. Regras abaixo compactam SÓ
   dentro de #busca — sem afetar o grid principal.
   ===================================================================== */

/* Container interno (.body__filter__page) controla padding lateral;
   container externo vai a 0 pra headModal colar no topo. */
article.filter__page#busca .container__filter__page {
    padding: 0 !important;
}

article.filter__page#busca .body__filter__page {
    padding: 0 !important;
    padding-bottom: 80px !important; /* respiro pro bottom-nav */
}

/* Search-row rola junto com o conteúdo (fluxo normal — não sticky).
   v4.99.x: sticky removido porque (a) o pai .container__filter__page tem
   overflow-y:auto, e sticky em scroller interno "desgruda" quando o limite
   do contêiner sai da viewport (sintoma: some depois de rolar um tanto),
   (b) UX preferido: search-row é parte do topo do modal, some ao rolar. */
article.filter__page#busca .search-row {
    padding: var(--space-3, 12px) var(--space-3, 12px) var(--space-2, 8px);
    margin: 0 !important;
    background: var(--bg-primary, #fff);
}

/* Cards compactos dentro do #busca — menos altura, menos respiro interno */
article.filter__page#busca .blocoOfertaApp {
    padding: var(--space-2, 8px) !important;
    border-radius: var(--radius-md, 10px);
    gap: 4px;
    min-height: 0;
}

/* Imagem menor (caber melhor na largura de ~175px) */
article.filter__page#busca .blocoOfertaApp .figureProduct,
article.filter__page#busca .blocoOfertaApp .fotoOferta,
article.filter__page#busca .blocoOfertaApp figure {
    aspect-ratio: 1 / 1;
    max-height: 120px;
    margin: 0 auto !important;
}

article.filter__page#busca .blocoOfertaApp .figureProduct img,
article.filter__page#busca .blocoOfertaApp .fotoOferta img,
article.filter__page#busca .blocoOfertaApp figure img {
    max-height: 120px;
    object-fit: contain;
}

/* Disclaimer "Imagem meramente ilustrativa" apagado no #busca — mantém no
   grid principal (/ofertas). No card compacto ocupa espaço desnecessário. */
article.filter__page#busca .blocoOfertaApp .imagem-ilustrativa,
article.filter__page#busca .blocoOfertaApp .disclaimer-imagem {
    display: none !important;
}

/* Nome do produto: 2 linhas max, evita cards de alturas diferentes */
article.filter__page#busca .blocoOfertaApp .nomeOferta,
article.filter__page#busca .blocoOfertaApp h3 {
    font-size: 13px;
    line-height: 1.3;
    margin: 4px 0 !important;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    min-height: 34px; /* 2 linhas garantidas */
}

/* Badge "Economize R$" compacto */
article.filter__page#busca .blocoOfertaApp .economize,
article.filter__page#busca .blocoOfertaApp [class*="economize"] {
    font-size: 11px;
    padding: 2px 6px;
    margin-bottom: 4px;
}

/* Preços: ocupam 1 linha, antigo + novo lado a lado */
article.filter__page#busca .blocoOfertaApp .precosWrap,
article.filter__page#busca .blocoOfertaApp .valor {
    margin: 2px 0 !important;
    font-size: 14px;
}

article.filter__page#busca .blocoOfertaApp .valor-antigo {
    font-size: 11px;
}

/* Controle de quantidade e botão Comprar — compactos */
article.filter__page#busca .blocoOfertaApp .controleQtd,
article.filter__page#busca .blocoOfertaApp .controle-quantidade {
    margin: 6px 0 !important;
}

article.filter__page#busca .blocoOfertaApp .btn-comprar,
article.filter__page#busca .blocoOfertaApp button[id*="addCart"],
article.filter__page#busca .blocoOfertaApp .adicionar {
    padding: 8px 10px !important;
    font-size: 12px !important;
    margin: 0 !important;
}


.cronometro .timer {
    display: flex;
    gap: 20px;
    justify-content: center;
}

.cronometro .timer div {
    background-color: #f8f9fa;
    padding: 10px 20px;
    border-radius: 10px;
    text-align: center;
    min-width: 70px;
}

.cronometro .timer span {
    display: block;
    font-size: 24px;
    font-weight: bold;
    color: #333;
}

.cronometro .timer small {
    color: #666;
    font-size: 12px;
}

.seletorAgenda{
    display: none !important;
}

#listaProdutos .form-check-input[type=checkbox]{
    display: none !important;
}

.gear{
    display: none !important;
}

.ver-opcoes{
    left: 70px !important;
}

.switch {
	position: relative;
	display: inline-block;
	width: 60px;
	height: 28px;
}

.switch input {
	opacity: 0;
	width: 0;
	height: 0;
}

.slider {
	position: absolute;
	cursor: pointer;
	inset: 0;
	background-color: #ccc;
	transition: .4s;
	border-radius: 34px;
}

.slider::before {
	position: absolute;
	content: "";
	height: 26px;
	width: 26px;
	left: 2px;
	bottom: 1px;
	background-color: #939393;
	transition: .4s;
	border-radius: 50%;
}

input:checked + .slider {
	background-color: #e7e7e7; ;
}

input:checked + .slider:before {
	transform: translateX(30px);
	background-color: #03553c;
}

#notificacao.open {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}

#notificacao .box .contentModal {
    max-height: 90vh;
    overflow-y: auto;
    background: #fff;
    padding: 20px;
    border-radius: 10px;
}

.btn-cart{
    padding: var(--space-3, 12px) var(--space-3, 12px);
    border-radius: var(--radius-md, 12px);
    font-size: var(--font-sm, 13px);
    border: none;
    min-height: var(--touch-target, 44px);
    min-width: var(--touch-target, 44px);
}

.remover img{
    position: relative;
    left: -1px;
    top: 1px;
}

.item-sacola {
    border-bottom: 1px solid var(--border-light, #f4f4f5);
    padding: var(--space-3, 12px) 0;
}

/* Card de pedido (histórico de compras/sacola) — layout compacto */
.item-sacola-bloco {
    width: 100%;
    max-width: 600px;
    background: var(--bg-primary, #fff);
    color: var(--text-primary, #18181b);
    padding: var(--space-3, 12px);
    border: 1px solid var(--border-light, #f4f4f5);
    border-radius: var(--radius-md, 12px);
    margin-bottom: var(--space-2, 8px);
    box-shadow: var(--shadow-xs, 0 1px 2px rgba(0,0,0,0.04));
    transition: background 0.15s ease, border-color 0.15s ease;
}

.item-sacola-bloco:active {
    background: var(--bg-secondary, #fafafa);
}

/* Cabeçalho: número do pedido + status + data */
.item-sacola-bloco .cabecalho {
    margin-bottom: var(--space-2, 8px);
    padding-bottom: var(--space-2, 8px);
    border-bottom: 1px solid var(--border-light, #f4f4f5);
}

.item-sacola-bloco .cabecalho h5 {
    font-size: var(--font-sm, 13px);
    font-weight: var(--weight-semibold, 600);
    color: var(--text-primary, #18181b);
    margin: 0;
    line-height: var(--leading-tight, 1.2);
}

.item-sacola-bloco .cabecalho small {
    font-size: var(--font-xs, 11px);
    color: var(--text-muted, #71717a);
    line-height: 1;
}

.item-sacola-bloco .cabecalho small strong {
    font-weight: var(--weight-medium, 500);
}

/* Badge de oferta exclusiva do clube */
.item-sacola-bloco .badge-smart-exclusivo {
    display: inline-flex;
    align-items: center;
    gap: var(--space-1, 4px);
    font-size: var(--font-xs, 11px);
    font-weight: var(--weight-medium, 500);
    padding: 2px var(--space-2, 8px);
    border-radius: var(--radius-full, 999px);
    background: color-mix(in srgb, var(--main-color) 10%, transparent);
    color: var(--main-color);
    margin-top: 2px;
}

/* Produto hero do pedido */
.item-sacola-bloco .produto {
    display: flex;
    align-items: flex-start;
    gap: var(--space-3, 12px);
    padding: 0;
    border: none;
}

.item-sacola-bloco .produto > div:first-child {
    width: 56px !important;
    height: 56px;
    flex-shrink: 0;
    border-radius: var(--radius-sm, 8px);
    overflow: hidden;
    border: 1px solid var(--border-light, #f4f4f5);
    background: var(--bg-secondary, #fafafa);
}

.item-sacola-bloco .produto > div:last-child {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
    font-size: var(--font-sm, 13px);
    color: var(--text-primary, #18181b);
    line-height: var(--leading-tight, 1.2);
}

.item-sacola-bloco .produto strong {
    font-size: var(--font-sm, 13px);
    font-weight: var(--weight-semibold, 600);
    color: var(--text-primary, #18181b);
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.item-sacola-bloco .conteudo-produtos {
    margin: var(--space-2, 8px) 0;
}

/* Rodapé: observação, tempo, loja, total */
.item-sacola-bloco .rodape-pedido {
    margin-top: var(--space-2, 8px);
    font-size: var(--font-xs, 11px);
    color: var(--text-muted, #71717a);
    line-height: var(--leading-normal, 1.5);
}

.item-sacola-bloco .rodape-pedido strong {
    color: var(--text-primary, #18181b);
    font-weight: var(--weight-semibold, 600);
}

.item-sacola-bloco .rodape-pedido .tempo-previsto {
    color: var(--text-muted, #71717a);
    font-size: var(--font-xs, 11px);
}

.item-sacola-bloco hr {
    /* separador visual antes do Ver detalhes: compactado, sem espaço vertical extra */
    display: none;
}

/* Ver detalhes colado no rodapé, alinhado à direita como link discreto */
.item-sacola-bloco .rodape-pedido:last-of-type {
    margin-top: 0;
    padding-top: var(--space-1, 4px);
    border-top: 1px solid var(--border-light, #f4f4f5);
    justify-content: flex-end !important;
}

.item-sacola-bloco .btn-ver-mais {
    padding: var(--space-1, 4px) 0;
    min-height: auto;
    font-size: var(--font-xs, 11px);
    font-weight: var(--weight-semibold, 600);
    gap: 4px;
}

.item-sacola-bloco .btn-ver-mais::after {
    content: "\f054"; /* fa-chevron-right */
    font-family: "Font Awesome 6 Free";
    font-weight: 900;
    font-size: 9px;
    opacity: 0.7;
}

#sacola .img-produto {
    width: 100%;
    height: 100%;
    border-radius: 0;
    object-fit: cover;
    max-height: none;
    display: block;
}

.status-piscando {
    display: inline-flex;
    align-items: center;
    gap: var(--space-1, 4px);
    animation: blink 1s infinite;
    font-size: var(--font-xs, 11px);
    font-weight: var(--weight-medium, 500);
    line-height: 1;
}

.status-piscando i {
    font-size: 8px;
}

@keyframes blink {
    0%   { opacity: 1; }
    50%  { opacity: 0.3; }
    100% { opacity: 1; }
}

.btn-itens-sacola{
    border: 1px solid var(--border-light, #f4f4f5);
    background: var(--bg-secondary, #fafafa);
    color: var(--text-primary, #18181b);
    font-size: var(--font-xs, 11px);
    text-align: center;
    font-weight: var(--weight-medium, 500);
    border-radius: var(--radius-full, 999px);
    padding: 2px var(--space-3, 12px);
    position: relative;
    display: inline-flex;
    align-items: center;
    margin: var(--space-1, 4px) 0 0;
    line-height: 1.6;
    cursor: pointer;
    transition: background 0.15s ease;
}

.btn-itens-sacola:active {
    background: var(--border-light, #f4f4f5);
}

.btn-ver-mais{
    font-size: var(--font-sm, 13px);
    font-weight: var(--weight-medium, 500);
    background: transparent;
    border: none;
    color: var(--main-color);
    opacity: 1;
    display: inline-flex;
    align-items: center;
    gap: var(--space-1, 4px);
    padding: var(--space-2, 8px) var(--space-3, 12px);
    min-height: var(--touch-target, 44px);
    cursor: pointer;
}

.btn-ver-mais:active {
    opacity: 0.6;
}

/* Botão "Ver Opções" — ícone e texto com mesma cor */
.btn-familia {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-1, 4px);
    font-size: var(--font-sm, 13px);
    font-weight: var(--weight-medium, 500);
    padding: var(--space-2, 8px) var(--space-4, 16px);
    border-radius: var(--radius-sm, 8px);
    border: none;
    cursor: pointer;
    min-height: 36px;
    transition: transform var(--transition-fast, 0.1s ease);
}

.btn-familia i {
    color: inherit;
    font-size: inherit;
}

#detalhesModal .status-piscando {
    animation: blink 1s infinite;
    font-size: 16px;
}

.text-orange {
  color: #fd7e14 !important;
}

.leaflet-popup-content {
    font-size: 13px !important;
}

.resumo {
    display: flex;
    flex-direction: column;
    gap: 0;
}

.produto-item {
    display: flex;
    align-items: flex-start;
    gap: var(--space-2, 8px);
    padding: var(--space-2, 8px) 0;
    border-bottom: 1px solid var(--border-light, #f4f4f5);
}

.produto-item:last-child {
    border-bottom: none;
    padding-bottom: 0;
}

.produto-item:first-child {
    padding-top: 0;
}

.img-wrapper {
    flex-shrink: 0;
    width: 70px;
    height: 70px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #ffffff;
    border-radius: 6px;
    overflow: hidden;
}

.img-produto {
    max-width: 100%;
    max-height: 100%;
    object-fit: cover;
}

.info-produto .nome {
    font-weight: 600;
    font-size: 15px;
    margin-bottom: 5px;
}

.precos {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 4px;
}

.quantidade-badge {
    background: #f1f1f1;
    color: #333;
    font-size: 12px;
    padding: 2px 6px;
    border-radius: 4px;
    font-weight: 600;
}


/* Caixa do modal ocupando a tela toda */
#jornais .box {
  position: absolute;
  inset: 0;
  margin: 0;
  background: #fff;
  border-radius: 0;
  display: flex;
  flex-direction: column;
}

/* Cabeçalho fixo */
#jornais .headModal {
  flex: 0 0 auto;
  padding: 16px;
  background: #2f2f2f; /* sua cor */
  color: #fff;
}

/* Barra de ações (adicionar / reordenar) */
#jornais .contentModal {
    flex: 0 0 auto;
    padding: 12px 16px 230px;
    background: #fff;
    gap: 20px;
    display: flex;
    flex-direction: column;
    /* border-bottom: 1px solid #eee; */
}

/* A lista é quem rola */
#listaJornais {
  flex: 1 1 auto;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch; /* iOS */
  padding: 12px 16px 24px;
  background: #fff;
}

/* Evita algum overflow:hidden herdado matar a rolagem */
#jornais .container-fluid,
#jornais .box {
  overflow: hidden; /* a box segura o fluxo, quem rola é #listaJornais */
}

/* Opcional: corpo sem rolagem quando modal aberto */
body.modal-open { overflow: hidden; }

#barcode{
    width: 270px;
    margin-bottom: 25px;
}

.chip-list {
    display: grid;
    gap: 8px;
    grid-template-columns: 1fr;
}

.filter-check {
  display: flex;
  align-items: center;
  gap: var(--space-2, 8px);
  padding: var(--space-1, 4px) var(--space-2, 8px);
  border: 1px solid var(--border-default, #e4e4e7);
  width: 100%;
  border-radius: var(--radius-sm, 8px);
  background: var(--bg-secondary, #fafafa);
  color: var(--text-primary, #18181b);
  min-height: var(--touch-target, 44px);
}
.filter-check input[type=checkbox] {
    width: 16px !important;
    height: 16px !important;
    margin-bottom: 0px !important
}

.filter-check label {
    margin: 0;
    font-size: 11px;
    cursor: pointer;
}

.filter-radio {
  display: flex;
  align-items: center;
  gap: var(--space-2, 8px);
  padding: var(--space-1, 4px) var(--space-2, 8px);
  border: 1px solid var(--border-default, #e4e4e7);
  width: 100%;
  border-radius: var(--radius-sm, 8px);
  background: var(--bg-secondary, #fafafa);
  color: var(--text-primary, #18181b);
  min-height: var(--touch-target, 44px);
}
.filter-radio input[type=radio] {
    width: 16px !important;
    height: 16px !important;
    margin-bottom: 0px !important
}

.filter-radio label {
    margin: 0;
    font-size: 11px;
    cursor: pointer;
}


.chip{
  display:inline-flex;
  align-items:center;
  padding: var(--space-2, 8px) var(--space-3, 12px);
  border: 1px solid var(--border-default, #e4e4e7);
  border-radius: var(--radius-full, 9999px);
  background: var(--bg-secondary, #fafafa);
  color: var(--text-primary, #18181b);
  font-size: var(--font-sm, 13px);
  cursor: pointer;
  user-select: none;
  min-height: 32px;
  transition: background var(--transition-normal, 0.2s ease);
}
.chip.active{
  background: var(--main-color, #3B82F6);
  color: var(--text-inverse, #fff);
  border-color: var(--main-color, #3B82F6);
}

.accordion-button{
    height: 60px;
    font-size: 18px;
}

.accordion-item{
    border: none !important;
}

#collapseCategoria .accordion-body{
    padding: 10px 0px 100px 0px !important;
}

.body__app{
    overflow-x: hidden;
}

#precoAntigo{
    color: #64748B;
}

.no-offers {
    display: flex;
    justify-content: center;
    align-items: center;
}

.no-offers-card {
    max-width: 650px;
    width: 100%;
    padding: 1.5rem 2rem;
    border-radius: 12px;
    /* background: #fff7d1; */
    /* border: 1px solid #f5d27a; */
    border: none;
    text-align: center;
    /* color: rgb(62 62 62) */
    /* box-shadow: 0 6px 18px rgba(0, 0, 0, 0.04); */
}

.no-offers-icon {
    font-size: 40px;
    margin-bottom: .5rem;
}

.no-offers-title {
    font-size: 24px !important;
    font-weight: bold;
    margin-bottom: .25rem;
}

.no-offers-text {
    margin: 0;
    font-size: 14px;
    opacity: 0.9;
}

.no-offers-icon i {
    animation: noOffersBounce 1.4s infinite ease-in-out;
}

@keyframes noOffersBounce {
    0%, 100% { transform: translateY(0); }
    50%      { transform: translateY(-4px); }
}

.info-message {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    padding: 10px 12px;
    margin-bottom: 16px;

    background: #fff3cd;          /* amarelinho de alerta */
    border-left: 4px solid #ffc107;
    border-radius: 8px;

    font-size: 0.85rem;
    color: #856404;
}

.info-message i {
    margin-top: 2px;
    font-size: 1rem;
}

.badge-smart-exclusivo {
    display: inline-block;
    margin-top: 4px;
    padding: 2px 8px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 600;
    color: #0f5132;
    background-color: #d1e7dd; /* verdinho tipo alert-success */
}

.badge-smart-exclusivo i {
    margin-right: 4px;
}

.alert-smart-exclusivo {
    margin-bottom: 12px;
    padding: 10px 12px;
    border-radius: 8px;
    font-size: 13px;
    line-height: 1.4;
    background: #fff3cd;      /* amarelo suave */
    color: #664d03;           /* texto escuro */
    border: 1px solid #ffe69c;
}
.alert-smart-exclusivo strong {
    font-size: 14px;
}

.validade-produto{
  opacity:.85;
  line-height:1.2;
  font-size: 12px;
}

/* ==========================================================================
   PHARUS-CARD — Sistema canônico de card do mobile-view (task #227, ADR-002 Camada 2)

   Estrutura BEM:
     .pharus-card
       .pharus-card__header
         .pharus-card__title
         .pharus-card__badge
         .pharus-card__meta
       .pharus-card__body
         .pharus-card__image
       .pharus-card__footer
         .pharus-card__actions

   Modifiers contextuais:
     --product   : card de produto (catálogo)
     --order     : card de pedido/compra
     --points    : card de pontos (stat/home)
     --cashback  : card de cashback/extrato
     --compact   : densidade reduzida
     --interactive : feedback tátil (active scale)

   Coexistência: cards legados (.purchase-card, .extract-card, .notif-card,
   .item-card, .points-home-card, .gam-home-card) continuam funcionando.
   Novos cards devem usar .pharus-card. Migração é gradual.
   ========================================================================== */
.pharus-card {
  background: var(--bg-primary, #fff);
  border: 1px solid var(--border-light, #f0f0f0);
  border-radius: var(--radius-md, 12px);
  padding: var(--space-4, 16px);
  box-shadow: var(--shadow-xs, 0 1px 4px rgba(0, 0, 0, 0.04));
  display: flex;
  flex-direction: column;
  gap: var(--space-2, 8px);
  transition: box-shadow var(--transition-normal, 0.2s), transform var(--transition-fast, 0.1s);
}

.pharus-card--interactive {
  cursor: pointer;
}

.pharus-card--interactive:active {
  transform: scale(0.98);
  box-shadow: var(--shadow-sm, 0 2px 8px rgba(0, 0, 0, 0.08));
}

.pharus-card--compact {
  padding: var(--space-3, 12px);
  gap: var(--space-1, 4px);
}

.pharus-card__header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--space-2, 8px);
}

.pharus-card__title {
  font-size: var(--font-md, 15px);
  font-weight: var(--weight-semibold, 600);
  color: var(--text-primary, #111);
  line-height: var(--leading-tight, 1.2);
  margin: 0;
}

.pharus-card__badge {
  font-size: var(--font-xs, 11px);
  font-weight: var(--weight-semibold, 600);
  padding: 4px 10px;
  border-radius: var(--radius-xl, 20px);
  background: var(--gray-100, #f4f4f5);
  color: var(--text-secondary, #52525b);
  display: inline-flex;
  align-items: center;
  gap: 4px;
  white-space: nowrap;
}

.pharus-card__badge--success {
  background: #ecfdf5;
  color: #059669;
}

.pharus-card__badge--danger {
  background: #fef2f2;
  color: #dc2626;
}

.pharus-card__badge--info {
  background: #eff6ff;
  color: #2563eb;
}

.pharus-card__meta {
  display: flex;
  align-items: center;
  gap: var(--space-2, 8px);
  font-size: var(--font-xs, 11px);
  color: var(--text-muted, #9ca3af);
}

.pharus-card__body {
  display: flex;
  flex-direction: column;
  gap: var(--space-2, 8px);
}

.pharus-card__image {
  width: 100%;
  border-radius: var(--radius-sm, 8px);
  overflow: hidden;
  display: block;
}

.pharus-card__image img {
  width: 100%;
  height: auto;
  display: block;
}

.pharus-card__footer {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--space-2, 8px);
  padding-top: var(--space-2, 8px);
  border-top: 1px solid var(--border-light, #f5f5f5);
}

.pharus-card__actions {
  display: flex;
  align-items: center;
  gap: var(--space-2, 8px);
  margin-left: auto;
}

/* Modifiers contextuais ---------------------------------------------------- */

/* --order: card de pedido (alinha com .purchase-card existente) */
.pharus-card--order .pharus-card__footer {
  color: var(--color-brand, #3B82F6);
  font-weight: var(--weight-semibold, 600);
  font-size: var(--font-xs, 12px);
}

/* --cashback: card de extrato/cashback */
.pharus-card--cashback .pharus-card__title {
  color: var(--color-success, #059669);
}

/* --product: card de produto */
.pharus-card--product {
  padding: var(--space-3, 12px);
}

/* --points: card de pontos */
.pharus-card--points {
  background: linear-gradient(135deg, var(--bg-primary, #fff) 0%, var(--bg-secondary, #fafafa) 100%);
}

/* ── Purchase Cards (LEGADO — mantido por coexistência; migrar gradualmente para .pharus-card) ─ */
.purchase-list {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.purchase-card {
  background: #fff;
  border-radius: 12px;
  border: 1px solid #f0f0f0;
  padding: 14px 16px;
  cursor: pointer;
  transition: box-shadow 0.2s, transform 0.1s;
  box-shadow: 0 1px 4px rgba(0,0,0,0.04);
}

.purchase-card:active {
  transform: scale(0.98);
  box-shadow: 0 2px 8px rgba(0,0,0,0.08);
}

.purchase-card-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 4px;
}

.purchase-card-date {
  font-size: 12px;
  color: #9ca3af;
  display: flex;
  align-items: center;
  gap: 6px;
}

.purchase-card-body {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 8px;
}

.purchase-card-values {
  display: flex;
  align-items: baseline;
  gap: 8px;
}

.purchase-card-original {
  font-size: 13px;
  color: #9ca3af;
  text-decoration: line-through;
}

.purchase-card-paid {
  font-size: 22px;
  font-weight: 700;
  color: #111;
}

.purchase-card-savings {
  background: #ecfdf5;
  color: #059669;
  font-size: 12px;
  font-weight: 600;
  padding: 4px 10px;
  border-radius: 20px;
  display: flex;
  align-items: center;
  gap: 4px;
}

.purchase-card-action {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: 4px;
  font-size: 12px;
  color: var(--color-brand);
  font-weight: 600;
  padding-top: 8px;
  border-top: 1px solid #f5f5f5;
}

.purchase-card-store {
  font-size: 12px;
  color: #6b7280;
  margin-bottom: 8px;
  display: flex;
  align-items: center;
  gap: 4px;
}

.purchase-card-store i {
  font-size: 10px;
  color: #9ca3af;
}

.purchase-card-meta {
  display: flex;
  align-items: center;
  gap: 8px;
}

.purchase-card-protocol {
  font-size: 11px;
  color: #9ca3af;
  font-family: monospace;
}

.purchase-card-items {
  font-size: 11px;
  color: #9ca3af;
  display: flex;
  align-items: center;
  gap: 3px;
}

/* ── Purchase Detail ────────────────────────────── */
.detail-info {
  background: #f0f9ff;
  border: 1px solid #bae6fd;
  border-radius: 10px;
  padding: 12px;
  margin-bottom: 12px;
}

.detail-info-row {
  font-size: 13px;
  color: #374151;
  padding: 2px 0;
  display: flex;
  align-items: center;
  gap: 8px;
}

.detail-info-row i {
  color: var(--color-brand, #3B82F6);
  font-size: 12px;
  width: 16px;
  text-align: center;
}

.detail-summary {
  background: #f9fafb;
  border-radius: 12px;
  padding: 16px;
  margin-bottom: 16px;
}

.detail-summary-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 4px 0;
  font-size: 13px;
  color: #6b7280;
}

.detail-summary-row.total {
  font-size: 16px;
  font-weight: 700;
  color: #111;
  padding-top: 8px;
  margin-top: 4px;
  border-top: 1px solid #e5e7eb;
}

.detail-summary-row.savings {
  color: #059669;
  font-weight: 600;
}

.detail-section-title {
  font-size: 14px;
  font-weight: 700;
  color: #111;
  margin: 16px 0 10px;
  display: flex;
  align-items: center;
  gap: 6px;
}

.detail-section-title i {
  color: var(--color-brand, #3B82F6);
  font-size: 13px;
}

.detail-product {
  background: #fff;
  border: 1px solid #f0f0f0;
  border-radius: 10px;
  padding: 12px;
  margin-bottom: 8px;
}

.detail-product-top {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  margin-bottom: 6px;
}

.detail-product-name {
  font-size: 14px;
  font-weight: 600;
  color: #111;
  flex: 1;
}

.detail-product-badge {
  font-size: 10px;
  font-weight: 700;
  padding: 2px 8px;
  border-radius: 10px;
  text-transform: uppercase;
  flex-shrink: 0;
  margin-left: 8px;
}

.detail-product-badge.clube {
  background: #dbeafe;
  color: #2563eb;
}

.detail-product-badge.oferta {
  background: #fef3c7;
  color: #d97706;
}

.detail-product-info {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 12px;
  color: #9ca3af;
}

.detail-product-qty {
  display: flex;
  gap: 8px;
}

.detail-product-price {
  text-align: right;
}

.detail-product-price-original {
  text-decoration: line-through;
  color: #9ca3af;
  font-size: 11px;
}

.detail-product-price-final {
  font-size: 15px;
  font-weight: 700;
  color: #111;
}

.detail-bonus-card {
  background: #ecfdf5;
  border: 1px solid #a7f3d0;
  border-radius: 10px;
  padding: 12px;
  margin-top: 16px;
}

.detail-bonus-card h5 {
  font-size: 13px;
  font-weight: 700;
  color: #059669;
  margin: 0 0 6px;
  display: flex;
  align-items: center;
  gap: 6px;
}

.detail-bonus-card p {
  font-size: 12px;
  color: #065f46;
  margin: 2px 0;
}

/* ── Extract Cards ───────────────────────────────── */
.extract-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.extract-card {
  background: #fff;
  border-radius: 12px;
  border: 1px solid #f0f0f0;
  padding: 14px 16px;
  box-shadow: 0 1px 4px rgba(0,0,0,0.04);
}

.extract-card-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 8px;
}

/* ═══════════════════════════════════════════════════════════════
   #modalProduto — Single product detail (v4.77.48 redesign)
   Layout estilo e-commerce single-product (Mercado Livre / Nubank
   marketplace): hero imagem, nome+preço+loja, seções descrição e
   trust-signals, footer com quantidade + CTA "Comprar".
   Padrão B — header+nav bottom visíveis; footer sticky dentro do
   .contentModal (não clipa no bottom nav).
   ═══════════════════════════════════════════════════════════════ */
.product-detail {
  cursor: default;
  padding: 0 !important;
  margin: 0 !important;
  height: auto;
  background: var(--bg-secondary, #fafafa);
  box-shadow: none !important;
  border-radius: 0 !important;
  display: flex;
  flex-direction: column;
  min-height: 100%;
}

/* v4.77.56 — Hero mais compacto, image wrap menor */
.product-detail__hero {
  position: relative;
  background: var(--bg-primary, #fff);
  padding: var(--space-4, 16px) var(--space-4, 16px) var(--space-3, 12px);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-1, 4px);
  border-bottom: 1px solid var(--border-light, #f4f4f5);
}

.product-detail__img-wrap {
  width: min(48vw, 200px);
  aspect-ratio: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--space-2, 8px);
}

.product-detail__img {
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
  filter: drop-shadow(0 6px 16px rgba(0,0,0,0.08));
}

.product-detail__aviso {
  font-size: var(--font-xs, 11px);
  color: var(--text-muted, #71717a);
  opacity: 0.8;
}

.product-detail__admin-btn {
  position: absolute !important;
  top: var(--space-3, 12px);
  right: var(--space-3, 12px);
}

/* BODY — info principal sobre fundo secundário */
.product-detail__body {
  padding: var(--space-5, 20px) var(--space-4, 16px);
  background: var(--bg-primary, #fff);
  margin-top: var(--space-2, 8px);
  display: flex;
  flex-direction: column;
  gap: var(--space-3, 12px);
}

/* v4.77.56 — tamanho fixo em !important pra vencer qualquer cascata
   (h2 default do browser, .nomeOferta antiga, etc). Antes o título
   ficava gigantesco (3 linhas 48px) por herança h2 default + outros
   overrides. Agora 17px semibold, 2 linhas máx com ellipsis. */
.product-detail__nome,
article.modal#modalProduto h2.nomeOferta.product-detail__nome,
article.modal#modalProduto #nomeProduto {
  margin: 0 !important;
  font-size: 17px !important;
  font-weight: var(--weight-semibold, 600) !important;
  letter-spacing: -0.01em !important;
  color: var(--text-primary, #18181b) !important;
  line-height: 1.3 !important;
  display: -webkit-box !important;
  -webkit-line-clamp: 2 !important;
  -webkit-box-orient: vertical !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

/* Preço — herda .precoOferta (que já tem CSS em main-theme-two) mas ajusta layout */
.product-detail__preco-bloco {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: var(--space-2, 8px);
  margin: 0;
}

.product-detail__preco-bloco del {
  font-size: var(--font-sm, 13px);
  color: var(--text-muted, #71717a);
  font-weight: var(--weight-regular, 400);
}

.product-detail__preco-bloco span {
  font-size: var(--font-2xl, 24px);
  font-weight: var(--weight-bold, 700);
  color: var(--color-success, #059669);
  letter-spacing: -0.02em;
}

.product-detail__loja {
  margin: 0;
  display: inline-flex;
  align-items: center;
  gap: var(--space-2, 8px);
  font-size: var(--font-sm, 13px);
  color: var(--text-muted, #71717a);
  font-weight: var(--weight-medium, 500);
}

.product-detail__loja i {
  color: var(--main-color, #3B82F6);
  font-size: var(--font-md, 15px);
}

.product-detail__divider {
  height: 1px;
  background: var(--border-light, #f4f4f5);
  margin: var(--space-2, 8px) 0;
}

.product-detail__secao {
  display: flex;
  flex-direction: column;
  gap: var(--space-2, 8px);
}

.product-detail__secao-titulo {
  margin: 0;
  font-size: var(--font-sm, 13px);
  font-weight: var(--weight-semibold, 600);
  color: var(--text-primary, #18181b);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  display: inline-flex;
  align-items: center;
  gap: var(--space-2, 8px);
}

.product-detail__secao-titulo i {
  color: var(--main-color, #3B82F6);
  font-size: var(--font-md, 15px);
}

.product-detail__desc {
  margin: 0;
  font-size: var(--font-md, 15px);
  color: var(--text-secondary, #52525b);
  line-height: var(--leading-normal, 1.5);
}

.product-detail__secao--meta {
  display: flex;
  flex-direction: column;
  gap: var(--space-3, 12px);
  padding-top: var(--space-3, 12px);
  border-top: 1px solid var(--border-light, #f4f4f5);
}

.product-detail__meta-item {
  display: flex;
  align-items: flex-start;
  gap: var(--space-3, 12px);
}

.product-detail__meta-item > i {
  color: var(--main-color, #3B82F6);
  font-size: 20px;
  width: 28px;
  text-align: center;
  flex-shrink: 0;
  margin-top: 2px;
}

.product-detail__meta-item > div {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.product-detail__meta-item strong {
  font-size: var(--font-sm, 13px);
  font-weight: var(--weight-semibold, 600);
  color: var(--text-primary, #18181b);
}

.product-detail__meta-item span {
  font-size: var(--font-xs, 12px);
  color: var(--text-muted, #71717a);
}

/* FOOTER CTA — sticky no bottom do .contentModal (não do viewport!)
   pra que o bottom-nav do app continue visível atrás e o usuário
   veja a CTA enquanto rola o conteúdo. */
.product-detail__footer {
  position: sticky;
  bottom: 0;
  z-index: 5;
  display: flex !important;
  align-items: center;
  gap: var(--space-3, 12px);
  padding: var(--space-3, 12px) var(--space-4, 16px);
  background: var(--bg-primary, #fff);
  border-top: 1px solid var(--border-light, #f4f4f5);
  box-shadow: 0 -4px 16px rgba(0,0,0,0.06);
  margin-top: auto;
}

.product-detail__footer .quantidade {
  flex-shrink: 0;
}

.product-detail__add-cart {
  flex: 1;
  min-width: 0;
  height: 48px !important;
  min-height: 48px !important;
  font-size: var(--font-md, 15px) !important;
  font-weight: var(--weight-semibold, 600) !important;
}

/* Reset do .blocoOfertaApp base quando está dentro do product-detail:
   anula background-branco/padding/height antigo pra não conflitar. */
article.modal#modalProduto .contentModal {
  padding: 0 !important;
  background: var(--bg-secondary, #fafafa);
  display: flex;
  flex-direction: column;
}

article.modal#modalProduto .blocoOfertaApp {
  background: transparent;
  border-radius: 0;
  padding: 0;
  margin: 0;
  height: auto;
  min-height: 100%;
  box-shadow: none;
}

article.modal#modalProduto #addCart {
  margin: 0 !important;
}

.extract-card-type {
  font-size: 12px;
  font-weight: 700;
  display: flex;
  align-items: center;
  gap: 5px;
}

.extract-card-date {
  font-size: 11px;
  color: #9ca3af;
}

.extract-card-body {
  margin-bottom: 4px;
}

.extract-card-amount {
  font-size: 22px;
  font-weight: 700;
  color: #059669;
}

.extract-card-desc {
  font-size: 11px;
  color: #6b7280;
  line-height: 1.4;
  padding-top: 6px;
  border-top: 1px solid #f5f5f5;
}

.extract-card-sale {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 8px;
  padding: 8px 10px;
  background: #f0fdf4;
  border: 1px solid #bbf7d0;
  border-radius: 8px;
  font-size: 11px;
  color: #166534;
  cursor: pointer;
  transition: background 0.15s;
}

.extract-card-sale:active {
  background: #dcfce7;
}

.extract-card-sale > i {
  margin-top: 2px;
  font-size: 12px;
}

.extract-card-sale-info {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.extract-card-sale-store {
  font-weight: 600;
}

.extract-card-sale-protocol {
  font-family: monospace;
  color: #4ade80;
  font-size: 10px;
}

.extract-card-sale-arrow {
  margin-left: auto;
  font-size: 12px;
  color: #86efac;
  flex-shrink: 0;
}

/* ── Campaign Banners ──────────────────────────────── */
.campaign-banner {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px;
  border-radius: 12px;
  margin-bottom: 10px;
  cursor: pointer;
  transition: transform 0.1s;
}

.campaign-banner:active {
  transform: scale(0.98);
}

.campaign-banner-cashback {
  background: linear-gradient(135deg, #065f46, #059669);
  color: #fff;
}

.campaign-banner-referral {
  background: linear-gradient(135deg, #1e3a5f, #2563eb);
  color: #fff;
}

.campaign-banner-icon {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: rgba(255,255,255,0.15);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  flex-shrink: 0;
}

.campaign-banner-info {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.campaign-banner-info strong {
  font-size: 14px;
}

.campaign-banner-info span {
  font-size: 12px;
  opacity: 0.9;
}

.campaign-banner-earned {
  font-size: 11px;
  opacity: 0.8;
  font-weight: 600;
}

.campaign-banner-arrow {
  opacity: 0.5;
  font-size: 14px;
  flex-shrink: 0;
}

/* ── Campaign Modal ────────────────────────────────── */
.campaign-modal-summary {
  margin-bottom: 16px;
}

.campaign-modal-earned {
  display: flex;
  align-items: center;
  gap: 10px;
  background: #ecfdf5;
  border: 1px solid #a7f3d0;
  border-radius: 10px;
  padding: 12px;
  margin-bottom: 12px;
  color: #065f46;
}

.campaign-modal-earned i {
  font-size: 20px;
  color: #059669;
}

.campaign-modal-earned div {
  display: flex;
  flex-direction: column;
}

.campaign-modal-earned span {
  font-size: 11px;
}

.campaign-modal-earned strong {
  font-size: 18px;
  color: #059669;
}

.campaign-modal-rules {
  background: #f9fafb;
  border-radius: 10px;
  padding: 14px;
}

.campaign-modal-rules h4 {
  font-size: 13px;
  font-weight: 700;
  color: #111;
  margin: 0 0 8px;
  display: flex;
  align-items: center;
  gap: 6px;
}

.campaign-modal-rules h4 i {
  color: var(--color-brand, #3B82F6);
}

.campaign-modal-rules p {
  font-size: 12px;
  color: #6b7280;
  line-height: 1.5;
  margin: 0 0 8px;
}

.campaign-modal-dates {
  font-size: 11px;
  color: #9ca3af;
  display: flex;
  align-items: center;
  gap: 4px;
}

.campaign-modal-section-title {
  font-size: 14px;
  font-weight: 700;
  color: #111;
  margin: 16px 0 10px;
  display: flex;
  align-items: center;
  gap: 6px;
}

.campaign-modal-section-title i {
  color: var(--color-brand, #3B82F6);
  font-size: 13px;
}

.campaign-products-grid {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.campaign-product-card {
  background: #fff;
  border: 1px solid #f0f0f0;
  border-radius: 10px;
  padding: 12px;
}

.campaign-product-cashback {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: #ecfdf5;
  color: #059669;
  font-size: 12px;
  font-weight: 700;
  padding: 3px 10px;
  border-radius: 20px;
  margin-bottom: 6px;
}

.campaign-product-cashback i {
  font-size: 10px;
}

.campaign-product-name {
  font-size: 14px;
  font-weight: 600;
  color: #111;
  margin: 0 0 2px;
}

.campaign-product-code {
  font-size: 11px;
  color: #9ca3af;
}

.campaign-modal-info-box {
  display: flex;
  align-items: center;
  gap: 10px;
  background: #eff6ff;
  border: 1px solid #bfdbfe;
  border-radius: 10px;
  padding: 14px;
  margin-top: 16px;
  color: #1e40af;
  font-size: 13px;
}

.campaign-modal-info-box i {
  font-size: 20px;
  flex-shrink: 0;
}

/* ── Referral Modal ────────────────────────────────── */
.referral-campaign-box {
  margin-bottom: 16px;
}

.referral-invite-box {
  margin-top: 12px;
}

.referral-invite-box label {
  font-size: 12px;
  color: #6b7280;
  margin-bottom: 6px;
  display: block;
}

.referral-clipboard {
  display: flex;
  gap: 0;
  border: 1px solid #e5e7eb;
  border-radius: 10px;
  overflow: hidden;
}

.referral-link-input {
  flex: 1;
  border: none;
  padding: 10px 12px;
  font-size: 12px;
  color: #374151;
  background: #f9fafb;
  outline: none;
}

.referral-copy-btn {
  background: var(--color-brand, #3B82F6);
  color: #fff;
  border: none;
  padding: 10px 14px;
  font-size: 14px;
  cursor: pointer;
}

.referral-share-buttons {
  display: flex;
  gap: 10px;
  margin-top: 12px;
  flex-wrap: wrap;
  justify-content: center;
}

.referral-share-btn {
  width: 42px;
  height: 42px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  color: #fff;
  border: none;
  cursor: pointer;
  text-decoration: none;
  transition: transform 0.2s, opacity 0.2s;
}

.referral-share-btn:hover {
  transform: scale(1.1);
  opacity: 0.9;
}

.share-whatsapp  { background: #25D366; }
.share-facebook  { background: #1877F2; }
.share-telegram  { background: #0088cc; }
.share-email     { background: #EA4335; }
.share-sms       { background: #4CAF50; }
.share-native    { background: #333; }

.referral-section-title {
  font-size: 14px;
  font-weight: 700;
  color: #111;
  margin: 16px 0 10px;
  display: flex;
  align-items: center;
  gap: 6px;
}

.referral-section-title i {
  color: var(--color-brand, #3B82F6);
  font-size: 13px;
}

.referral-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.referral-item {
  display: flex;
  align-items: center;
  gap: 10px;
  background: #fff;
  border: 1px solid #f0f0f0;
  border-radius: 10px;
  padding: 10px 12px;
}

.referral-item-avatar {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: #f3f4f6;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #9ca3af;
  font-size: 14px;
  flex-shrink: 0;
}

.referral-item-info {
  flex: 1;
  display: flex;
  flex-direction: column;
}

.referral-item-info strong {
  font-size: 13px;
  color: #111;
}

.referral-item-info span {
  font-size: 11px;
  color: #9ca3af;
}

.referral-item-badge {
  font-size: 10px;
  font-weight: 700;
  padding: 3px 8px;
  border-radius: 20px;
  display: flex;
  align-items: center;
  gap: 3px;
  flex-shrink: 0;
}

.referral-item-badge.success {
  background: #ecfdf5;
  color: #059669;
}

.referral-item-badge.pending {
  background: #fef3c7;
  color: #d97706;
}
