/* ══════════════════════════════════════════════════════════════════
   GAD · utilitários da plataforma
   Os snipplets oficiais (frete, carrinho, formulários, modais) usam
   utilitários do tema Base. Aqui está o subconjunto necessário,
   escrito com os tokens do ateliê. Não usar em código novo.
   ══════════════════════════════════════════════════════════════════ */

/* display e fluxo */
.d-none{display:none!important}.d-block{display:block!important}.d-inline-block{display:inline-block!important}
.d-flex{display:flex!important}.d-table{display:table!important}
.hidden{display:none!important}.clear-both{clear:both}.overflow-none{overflow:hidden}
.w-100{width:100%!important}.h-100{height:100%!important}.mw-100{max-width:100%}
.float-left{float:left}.float-right,.pull-right{float:right}
.position-relative,.p-relative{position:relative}.position-absolute{position:absolute}
.img-fluid{max-width:100%;height:auto}
.img-absolute{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.img-absolute-centered{object-position:center}
.align-sub{vertical-align:sub}.align-bottom{vertical-align:bottom}
.point{cursor:pointer}.opacity-50{opacity:.5}.disabled{opacity:.5;pointer-events:none}

/* alinhamento */
.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}
.text-capitalize{text-transform:capitalize}.text-lowercase{text-transform:lowercase}
.align-items-center{align-items:center}.justify-content-center{justify-content:center}
.justify-content-end{justify-content:flex-end}.no-gutters{margin-inline:0}
.flex-row{flex-direction:row}
@media (min-width:768px){
  .d-md-none{display:none!important}.d-md-block{display:block!important}
  .d-md-inline-block{display:inline-block!important}
  .align-items-md-center{align-items:center}
  .justify-content-md-center{justify-content:center}
  .justify-content-md-end{justify-content:flex-end}
  .text-md-center{text-align:center}.text-md-left{text-align:left}
  .position-sticky-md{position:sticky;top:calc(var(--nav-h) + 16px)}
}

/* espaçamento (o que os snipplets usam) */
.m-0{margin:0!important}.p-0{padding:0!important}
.mx-0{margin-inline:0}.mx-2{margin-inline:8px}.mx-3{margin-inline:12px}.mx-auto{margin-inline:auto}
.my-3{margin-block:12px}.mr-0{margin-right:0}.mr-1{margin-right:4px}.mr-3{margin-right:12px}
.pl-0{padding-left:0}.pr-0{padding-right:0}
@media (min-width:768px){.mr-md-2{margin-right:8px}.my-md-2{margin-block:8px}}

/* tipografia auxiliar */
.font-small{font-size:12.5px}.font-big{font-size:18px}
.font-weight-bold{font-weight:700}.font-weight-normal{font-weight:400}
.h2,.h3,.h4-md,.h5,.h5-md,.h6{font-family:var(--f-display);font-weight:700;line-height:1.15}
.h2{font-size:clamp(26px,3vw,38px)}.h3{font-size:clamp(22px,2.4vw,30px)}
.h5,.h5-md{font-size:17px}.h6{font-size:15px}
.text-primary{color:var(--fg)}.text-accent{color:var(--gold-d)}.text-foreground{color:var(--fg)}
.background-primary{background:var(--fg);color:var(--bg)}
.user-content img{max-width:100%;height:auto}

/* formulários da plataforma */
.form-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.form-control-container,.form-control-area{position:relative;flex:1}
.form-control-inline{display:inline-block;width:auto}
.form-select-icon,.form-quantity-icon,.form-toggle-eye{position:absolute;right:12px;top:50%;transform:translateY(-50%);pointer-events:none}
.invalid-zipcode{border-color:var(--clay)!important}
.winnie-pooh{display:none!important}
.checkbox-container,.radio-button-container{display:flex;flex-wrap:wrap;gap:8px}
input.radio-button,input.checkbox{position:absolute;opacity:0;pointer-events:none} /* v4.2: só o INPUT some — o rótulo das opções de frete também usa .radio-button e ficava invisível */
.radio-button-label,.checkbox-text{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-size:14px}
.radio-button-content,.checkbox-icon{display:inline-flex;align-items:center;justify-content:center;
  min-width:78px;padding:10px 14px;border:1px solid var(--line);background:var(--paper);
  font-family:var(--f-mono);font-size:12px;transition:all .22s cubic-bezier(.16,1,.3,1)}
.radio-button:checked + .radio-button-label .radio-button-content,
.checkbox:checked + .checkbox-text .checkbox-icon,
.radio-button-item.checked .radio-button-content{background:var(--fg);border-color:var(--fg);color:var(--bg)}

/* botões auxiliares */
.btn-small{padding:9px 16px;font-size:12px}
.btn-medium{padding:12px 22px}
.btn-default{border:1px solid var(--line);background:var(--paper)}
.btn-link,.btn-link-primary{background:none;border:0;color:var(--fg);text-decoration:underline;
  text-underline-offset:3px;cursor:pointer;padding:0}
.btn-transition-progress,.btn-transition-success{position:relative}
.spinner-ellipsis,.shipping-spinner-container,.cart-item-spinner{display:inline-block;min-height:18px}

/* modais e notificações */
.modal{position:fixed;inset:0;z-index:100;display:none;overflow:auto}
.modal.modal-open,.modal.is-open{display:block}
.modal-header,.modal-body,.modal-footer{padding:18px 22px}
.modal-header{border-bottom:1px solid var(--line);font-family:var(--f-display);font-size:20px}
.modal-footer{border-top:1px solid var(--line)}
.modal-close{position:absolute;right:14px;top:14px;background:none;border:0;cursor:pointer}
.modal-scrollable-area{max-height:70vh;overflow:auto}
.notification{position:fixed;z-index:120;right:18px;bottom:18px;max-width:340px;
  background:var(--paper);border:1px solid var(--line);border-left:2px solid var(--gold);padding:14px 16px}
.notification-hidden{display:none}
.notification-visible{display:block}
.notification-img{width:54px;height:54px;object-fit:cover}
.notification-close{position:absolute;right:8px;top:8px;background:none;border:0;cursor:pointer}

/* barra de frete grátis */
.bar-progress{height:4px;background:var(--line);position:relative;overflow:hidden}
.bar-progress-active{position:absolute;left:0;top:0;bottom:0;background:var(--gold);transition:width .4s cubic-bezier(.16,1,.3,1)}
.bar-progress-success .bar-progress-active{background:var(--moss)}
.ship-free-rest-message,.ship-free-rest-text{font-family:var(--f-mono);font-size:12px;color:var(--muted)}

/* itens de carrinho gerados pela plataforma */
.cart-item-name{font-family:var(--f-display);font-size:16px;line-height:1.25}
.cart-item-subtotal{font-family:var(--f-mono)}
.cart-item-quantity{display:inline-flex;align-items:center;border:1px solid var(--line)}
.cart-item-btn{width:34px;height:34px;background:none;border:0;cursor:pointer}
.cart-item-delete{background:none;border:0;color:var(--muted);cursor:pointer;font-size:12px}
.subtotal-price{font-family:var(--f-mono);font-size:17px}

/* placeholders e transições */
.placeholder-container,.product-placeholder-container{position:relative;overflow:hidden;background:var(--bone-2)}
.placeholder-shine{position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.45),transparent);animation:gadShine 1.4s infinite}
@keyframes gadShine{to{transform:translateX(100%)}}
.transition-soft{transition:all .5s cubic-bezier(.16,1,.3,1)}
.transition-up{transform:translateY(8px);opacity:0}
.transition-up-active{transform:none;opacity:1}
.hidden-when-content-ready{display:none}

/* carrossel nativo, quando usado por snipplets oficiais */
.swiper-container{position:relative;overflow:hidden}
.swiper-wrapper{display:flex}
.swiper-slide{flex:0 0 100%}
.swiper-button-prev,.swiper-button-next{position:absolute;top:50%;transform:translateY(-50%);z-index:2;cursor:pointer}
.swiper-button-prev{left:10px}.swiper-button-next{right:10px}
.swiper-pagination{position:absolute;bottom:10px;left:0;right:0;text-align:center}

/* cabeçalho de página e migalhas oficiais */
.page-header{padding-top:calc(var(--nav-h) + 40px)}
.page-header-text{font-family:var(--f-display);font-size:clamp(28px,3.4vw,44px)}
.breadcrumbs,.crumb{font-family:var(--f-mono);font-size:11.5px;letter-spacing:.1em;color:var(--muted)}
.list-unstyled,.list{list-style:none;padding:0;margin:0}
.list-item{padding:10px 0;border-bottom:1px solid var(--line-2)}
.divider{height:1px;background:var(--line);margin:16px 0}
.box,.card{border:1px solid var(--line);background:var(--paper)}
.card-header,.card-body,.card-footer{padding:16px 18px}
.card-header{border-bottom:1px solid var(--line)}
.card-footer{border-top:1px solid var(--line)}
.section-footer{padding-block:12px}
.labels,.label{font-family:var(--f-mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase}
.label-primary{background:var(--fg);color:var(--bg);padding:3px 8px}
.label-secondary{background:var(--gold);color:var(--ink);padding:3px 8px}
.social-share{display:flex;gap:8px}
.social-share-button,.social-icon{width:34px;height:34px;display:grid;place-items:center;border:1px solid var(--line)}


/* ══════════════════════════════════════════════════════════════════
   GAD · correção da página de carrinho / frete
   Complementa utilitários necessários aos snipplets nativos.
   ══════════════════════════════════════════════════════════════════ */

/* Ícones SVG nativos: sem isso o caminhão do frete ocupa a tela inteira */
.icon-inline{display:inline-block;font-size:inherit;width:1em;height:1em;max-width:none;overflow:visible;vertical-align:-.125em;fill:currentColor}
.icon-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}
.icon-inline.icon-lg{vertical-align:-.225em}
.icon-inline.icon-w-18{width:1.125em}
.icon-inline.icon-w-12{width:.75em}
.icon-inline.icon-w-8{width:.5em}
.icon-3x{font-size:3em}
.icon-spin{animation:gadSpin 1s linear infinite}
@keyframes gadSpin{to{transform:rotate(360deg)}}
.svg-icon-text{fill:currentColor}

/* Colunas que os snipplets de carrinho usam e faltavam no subset */
@media (min-width:768px){
  .col-md-1{flex:0 0 auto;width:8.333333%}
  .col-md-10{flex:0 0 auto;width:83.333333%}
  .col-md-11{flex:0 0 auto;width:91.666667%}
  .col-md-auto{flex:0 0 auto;width:auto}
  .float-md-none{float:none!important}
}

/* Espaçamentos do Bootstrap usados pelo carrinho/frete/conta nativos.
   ESCOPADOS aos blocos nativos: fora deles, .mt-2/.mt-3/.mt-4 e .mb-* são os
   ritmos do sistema visual do ateliê (16/26/40px), definidos em gad-system.css.
   Uma versão anterior aplicava estes valores globalmente e apertava toda a
   página inicial em relação ao protótipo aprovado. */
.drawer-b .m-auto, .cart-page .m-auto, #product-shipping-container .m-auto, .gad-native .m-auto, .modal .m-auto, .notification .m-auto, .js-search-suggest .m-auto, .template-account-login main .m-auto, .template-account-register main .m-auto, .template-account-info main .m-auto, .template-account-orders main .m-auto, .template-account-order main .m-auto, .template-account-addresses main .m-auto, .template-account-address main .m-auto, .template-account-reset main .m-auto, .template-account-newpass main .m-auto, .template-password main .m-auto, .template-404 .gad-native-ui .m-auto, .gad-native-ui .m-auto{margin:auto!important}
.drawer-b .mt-0, .cart-page .mt-0, #product-shipping-container .mt-0, .gad-native .mt-0, .modal .mt-0, .notification .mt-0, .js-search-suggest .mt-0, .template-account-login main .mt-0, .template-account-register main .mt-0, .template-account-info main .mt-0, .template-account-orders main .mt-0, .template-account-order main .mt-0, .template-account-addresses main .mt-0, .template-account-address main .mt-0, .template-account-reset main .mt-0, .template-account-newpass main .mt-0, .template-password main .mt-0, .template-404 .gad-native-ui .mt-0, .gad-native-ui .mt-0{margin-top:0!important}
.drawer-b .mt-1, .cart-page .mt-1, #product-shipping-container .mt-1, .gad-native .mt-1, .modal .mt-1, .notification .mt-1, .js-search-suggest .mt-1, .template-account-login main .mt-1, .template-account-register main .mt-1, .template-account-info main .mt-1, .template-account-orders main .mt-1, .template-account-order main .mt-1, .template-account-addresses main .mt-1, .template-account-address main .mt-1, .template-account-reset main .mt-1, .template-account-newpass main .mt-1, .template-password main .mt-1, .template-404 .gad-native-ui .mt-1, .gad-native-ui .mt-1{margin-top:4px!important}
.drawer-b .mt-2, .cart-page .mt-2, #product-shipping-container .mt-2, .gad-native .mt-2, .modal .mt-2, .notification .mt-2, .js-search-suggest .mt-2, .template-account-login main .mt-2, .template-account-register main .mt-2, .template-account-info main .mt-2, .template-account-orders main .mt-2, .template-account-order main .mt-2, .template-account-addresses main .mt-2, .template-account-address main .mt-2, .template-account-reset main .mt-2, .template-account-newpass main .mt-2, .template-password main .mt-2, .template-404 .gad-native-ui .mt-2, .gad-native-ui .mt-2{margin-top:8px!important}
.drawer-b .mt-3, .cart-page .mt-3, #product-shipping-container .mt-3, .gad-native .mt-3, .modal .mt-3, .notification .mt-3, .js-search-suggest .mt-3, .template-account-login main .mt-3, .template-account-register main .mt-3, .template-account-info main .mt-3, .template-account-orders main .mt-3, .template-account-order main .mt-3, .template-account-addresses main .mt-3, .template-account-address main .mt-3, .template-account-reset main .mt-3, .template-account-newpass main .mt-3, .template-password main .mt-3, .template-404 .gad-native-ui .mt-3, .gad-native-ui .mt-3{margin-top:12px!important}
.drawer-b .mt-4, .cart-page .mt-4, #product-shipping-container .mt-4, .gad-native .mt-4, .modal .mt-4, .notification .mt-4, .js-search-suggest .mt-4, .template-account-login main .mt-4, .template-account-register main .mt-4, .template-account-info main .mt-4, .template-account-orders main .mt-4, .template-account-order main .mt-4, .template-account-addresses main .mt-4, .template-account-address main .mt-4, .template-account-reset main .mt-4, .template-account-newpass main .mt-4, .template-password main .mt-4, .template-404 .gad-native-ui .mt-4, .gad-native-ui .mt-4{margin-top:16px!important}
.drawer-b .mt-5, .cart-page .mt-5, #product-shipping-container .mt-5, .gad-native .mt-5, .modal .mt-5, .notification .mt-5, .js-search-suggest .mt-5, .template-account-login main .mt-5, .template-account-register main .mt-5, .template-account-info main .mt-5, .template-account-orders main .mt-5, .template-account-order main .mt-5, .template-account-addresses main .mt-5, .template-account-address main .mt-5, .template-account-reset main .mt-5, .template-account-newpass main .mt-5, .template-password main .mt-5, .template-404 .gad-native-ui .mt-5, .gad-native-ui .mt-5{margin-top:20px!important}
.drawer-b .mb-0, .cart-page .mb-0, #product-shipping-container .mb-0, .gad-native .mb-0, .modal .mb-0, .notification .mb-0, .js-search-suggest .mb-0, .template-account-login main .mb-0, .template-account-register main .mb-0, .template-account-info main .mb-0, .template-account-orders main .mb-0, .template-account-order main .mb-0, .template-account-addresses main .mb-0, .template-account-address main .mb-0, .template-account-reset main .mb-0, .template-account-newpass main .mb-0, .template-password main .mb-0, .template-404 .gad-native-ui .mb-0, .gad-native-ui .mb-0{margin-bottom:0!important}
.drawer-b .mb-1, .cart-page .mb-1, #product-shipping-container .mb-1, .gad-native .mb-1, .modal .mb-1, .notification .mb-1, .js-search-suggest .mb-1, .template-account-login main .mb-1, .template-account-register main .mb-1, .template-account-info main .mb-1, .template-account-orders main .mb-1, .template-account-order main .mb-1, .template-account-addresses main .mb-1, .template-account-address main .mb-1, .template-account-reset main .mb-1, .template-account-newpass main .mb-1, .template-password main .mb-1, .template-404 .gad-native-ui .mb-1, .gad-native-ui .mb-1{margin-bottom:4px!important}
.drawer-b .mb-2, .cart-page .mb-2, #product-shipping-container .mb-2, .gad-native .mb-2, .modal .mb-2, .notification .mb-2, .js-search-suggest .mb-2, .template-account-login main .mb-2, .template-account-register main .mb-2, .template-account-info main .mb-2, .template-account-orders main .mb-2, .template-account-order main .mb-2, .template-account-addresses main .mb-2, .template-account-address main .mb-2, .template-account-reset main .mb-2, .template-account-newpass main .mb-2, .template-password main .mb-2, .template-404 .gad-native-ui .mb-2, .gad-native-ui .mb-2{margin-bottom:8px!important}
.drawer-b .mb-3, .cart-page .mb-3, #product-shipping-container .mb-3, .gad-native .mb-3, .modal .mb-3, .notification .mb-3, .js-search-suggest .mb-3, .template-account-login main .mb-3, .template-account-register main .mb-3, .template-account-info main .mb-3, .template-account-orders main .mb-3, .template-account-order main .mb-3, .template-account-addresses main .mb-3, .template-account-address main .mb-3, .template-account-reset main .mb-3, .template-account-newpass main .mb-3, .template-password main .mb-3, .template-404 .gad-native-ui .mb-3, .gad-native-ui .mb-3{margin-bottom:12px!important}
.drawer-b .mb-4, .cart-page .mb-4, #product-shipping-container .mb-4, .gad-native .mb-4, .modal .mb-4, .notification .mb-4, .js-search-suggest .mb-4, .template-account-login main .mb-4, .template-account-register main .mb-4, .template-account-info main .mb-4, .template-account-orders main .mb-4, .template-account-order main .mb-4, .template-account-addresses main .mb-4, .template-account-address main .mb-4, .template-account-reset main .mb-4, .template-account-newpass main .mb-4, .template-password main .mb-4, .template-404 .gad-native-ui .mb-4, .gad-native-ui .mb-4{margin-bottom:16px!important}
.drawer-b .mb-5, .cart-page .mb-5, #product-shipping-container .mb-5, .gad-native .mb-5, .modal .mb-5, .notification .mb-5, .js-search-suggest .mb-5, .template-account-login main .mb-5, .template-account-register main .mb-5, .template-account-info main .mb-5, .template-account-orders main .mb-5, .template-account-order main .mb-5, .template-account-addresses main .mb-5, .template-account-address main .mb-5, .template-account-reset main .mb-5, .template-account-newpass main .mb-5, .template-password main .mb-5, .template-404 .gad-native-ui .mb-5, .gad-native-ui .mb-5{margin-bottom:20px!important}
.drawer-b .px-0, .cart-page .px-0, #product-shipping-container .px-0, .gad-native .px-0, .modal .px-0, .notification .px-0, .js-search-suggest .px-0, .template-account-login main .px-0, .template-account-register main .px-0, .template-account-info main .px-0, .template-account-orders main .px-0, .template-account-order main .px-0, .template-account-addresses main .px-0, .template-account-address main .px-0, .template-account-reset main .px-0, .template-account-newpass main .px-0, .template-password main .px-0, .template-404 .gad-native-ui .px-0, .gad-native-ui .px-0{padding-left:0!important;padding-right:0!important}
.drawer-b .px-2, .cart-page .px-2, #product-shipping-container .px-2, .gad-native .px-2, .modal .px-2, .notification .px-2, .js-search-suggest .px-2, .template-account-login main .px-2, .template-account-register main .px-2, .template-account-info main .px-2, .template-account-orders main .px-2, .template-account-order main .px-2, .template-account-addresses main .px-2, .template-account-address main .px-2, .template-account-reset main .px-2, .template-account-newpass main .px-2, .template-password main .px-2, .template-404 .gad-native-ui .px-2, .gad-native-ui .px-2{padding-left:8px!important;padding-right:8px!important}
.drawer-b .px-3, .cart-page .px-3, #product-shipping-container .px-3, .gad-native .px-3, .modal .px-3, .notification .px-3, .js-search-suggest .px-3, .template-account-login main .px-3, .template-account-register main .px-3, .template-account-info main .px-3, .template-account-orders main .px-3, .template-account-order main .px-3, .template-account-addresses main .px-3, .template-account-address main .px-3, .template-account-reset main .px-3, .template-account-newpass main .px-3, .template-password main .px-3, .template-404 .gad-native-ui .px-3, .gad-native-ui .px-3{padding-left:12px!important;padding-right:12px!important}
.drawer-b .py-1, .cart-page .py-1, #product-shipping-container .py-1, .gad-native .py-1, .modal .py-1, .notification .py-1, .js-search-suggest .py-1, .template-account-login main .py-1, .template-account-register main .py-1, .template-account-info main .py-1, .template-account-orders main .py-1, .template-account-order main .py-1, .template-account-addresses main .py-1, .template-account-address main .py-1, .template-account-reset main .py-1, .template-account-newpass main .py-1, .template-password main .py-1, .template-404 .gad-native-ui .py-1, .gad-native-ui .py-1{padding-top:4px!important;padding-bottom:4px!important}
@media (min-width:576px){
  .drawer-b .px-sm-3, .cart-page .px-sm-3, #product-shipping-container .px-sm-3, .gad-native .px-sm-3, .modal .px-sm-3, .notification .px-sm-3, .js-search-suggest .px-sm-3, .template-account-login main .px-sm-3, .template-account-register main .px-sm-3, .template-account-info main .px-sm-3, .template-account-orders main .px-sm-3, .template-account-order main .px-sm-3, .template-account-addresses main .px-sm-3, .template-account-address main .px-sm-3, .template-account-reset main .px-sm-3, .template-account-newpass main .px-sm-3, .template-password main .px-sm-3, .template-404 .gad-native-ui .px-sm-3, .gad-native-ui .px-sm-3{padding-left:12px!important;padding-right:12px!important}
}
@media (min-width:768px){
  .drawer-b .mt-md-0, .cart-page .mt-md-0, #product-shipping-container .mt-md-0, .gad-native .mt-md-0, .modal .mt-md-0, .notification .mt-md-0, .js-search-suggest .mt-md-0, .template-account-login main .mt-md-0, .template-account-register main .mt-md-0, .template-account-info main .mt-md-0, .template-account-orders main .mt-md-0, .template-account-order main .mt-md-0, .template-account-addresses main .mt-md-0, .template-account-address main .mt-md-0, .template-account-reset main .mt-md-0, .template-account-newpass main .mt-md-0, .template-password main .mt-md-0, .template-404 .gad-native-ui .mt-md-0, .gad-native-ui .mt-md-0{margin-top:0!important}
  .drawer-b .mb-md-0, .cart-page .mb-md-0, #product-shipping-container .mb-md-0, .gad-native .mb-md-0, .modal .mb-md-0, .notification .mb-md-0, .js-search-suggest .mb-md-0, .template-account-login main .mb-md-0, .template-account-register main .mb-md-0, .template-account-info main .mb-md-0, .template-account-orders main .mb-md-0, .template-account-order main .mb-md-0, .template-account-addresses main .mb-md-0, .template-account-address main .mb-md-0, .template-account-reset main .mb-md-0, .template-account-newpass main .mb-md-0, .template-password main .mb-md-0, .template-404 .gad-native-ui .mb-md-0, .gad-native-ui .mb-md-0{margin-bottom:0!important}
}

/* O conteúdo da calculadora é absoluto; estes estados reservam sua altura */
.shipping-calculator-head.with-zip{height:45px}
.shipping-calculator-head.with-form{height:105px}
.shipping-calculator-head.with-form + .shipping-spinner-container{margin-top:-20px}
.shipping-calculator-head.with-error{height:170px}
