/* Native Astra/WooCommerce adapters only. Approved source styles remain unchanged. */
body.fanyipins-ui-page #primary{min-width:0;}
body.fanyipins-ui-page .site-content > .ast-container:has(> #primary:only-child){max-width:none;padding-inline:0;}
body.fanyipins-ui-page .site-content > .ast-container > #primary:only-child{width:100%;margin:0;padding:0;border:0;}
body.fanyipins-ui-page #primary .ast-article-single:has(.fanyipins-ui-scope),
body.fanyipins-ui-page .fanyipins-ui-scope .ast-article-single{padding:0;background:transparent;}
body.fanyipins-ui-page #primary .entry-content:has(> .fanyi-homepage),
body.fanyipins-ui-page #primary .entry-content:has(> .fanyi-ui){max-width:none;margin:0;}
body.fanyipins-ui-page #primary article:has(.custom-intro) > .entry-header,
body.fanyipins-ui-page #primary article:has(.contact-intro) > .entry-header,
body.fanyipins-ui-home #primary article:has(.fanyi-homepage) > .entry-header{display:none;}
.fanyipins-ui-scope .entry-content > :is(.fanyi-ui,.fanyi-homepage){max-width:none;}
.fanyipins-ui-scope.shopping-ui .woocommerce-products-header{padding-block:1rem 1.5rem;}
.fanyipins-ui-scope.shopping-ui .woocommerce-products-header__title{font-size:clamp(2rem,3.6vw,3.25rem);line-height:1.1;letter-spacing:var(--fanyi-tracking);}
body.fanyipins-ui-shopping .shopping-ui ul.products::before,
body.fanyipins-ui-shopping .shopping-ui ul.products::after{content:none;}
body.fanyipins-ui-shopping .shopping-ui ul.products li.product{float:none;width:auto;margin:0;border:1px solid var(--fanyi-border);border-radius:var(--fanyi-radius-lg);background:var(--fanyi-bg);box-shadow:var(--fanyi-shadow-card);}
body.fanyipins-ui-shopping .shopping-ui ul.products{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));}
@media(min-width:48rem){body.fanyipins-ui-shopping .shopping-ui ul.products{grid-template-columns:repeat(3,minmax(0,1fr));}}
@media(min-width:64rem){body.fanyipins-ui-shopping .shopping-ui ul.products{grid-template-columns:repeat(4,minmax(0,1fr));}}
.fanyipins-ui-scope.shopping-ui .button{display:inline-flex;align-items:center;justify-content:center;min-height:var(--fanyi-control-height);max-width:100%;padding:.875rem 1.25rem;border:1px solid var(--fanyi-green);border-radius:var(--fanyi-radius-sm);background:var(--fanyi-green);color:white;font:650 .9375rem/1.35 var(--fanyi-font);white-space:normal;text-align:center;}
.fanyipins-ui-scope.shopping-ui .button:hover{background:var(--fanyi-green-hover);}
.fanyipins-ui-scope.shopping-ui :is(.orderby,.variations select,.quantity input){min-width:0;max-width:100%;min-height:var(--fanyi-control-height);border:1px solid var(--fanyi-border);border-radius:var(--fanyi-radius-sm);padding:.75rem;background:var(--fanyi-bg);color:var(--fanyi-text);font:inherit;}
.fanyipins-ui-scope.shopping-ui .variations select{width:100%;}
/* FlexSlider controls its own widths/transforms; never turn its track into a grid. */
body.fanyipins-ui-shopping .shopping-ui .woocommerce-product-gallery__wrapper{display:block;}
body.fanyipins-ui-shopping .shopping-ui .shop-product-layout > :is(.images,.summary){float:none;width:100%;margin:0;}
.fanyipins-ui-scope.shopping-ui .woocommerce-product-gallery .zoomImg{max-width:none;aspect-ratio:auto;object-fit:initial;}
.fanyipins-ui-scope.shopping-ui .woocommerce-pagination ul{border:0;}
.fanyipins-ui-scope.shopping-ui .woocommerce-pagination li{border:0;margin:0;}
/* Eight-pin responsive composition is shared in homepage-ui/hero.css. */

/* Native page-title and archive adapters for the approved layouts. */
body.fanyipins-ui-page #primary article:has(.bulk-ui,.how-ui) > .entry-header{display:none;}
body.fanyipins-ui-footer #ast-scroll-top{display:none!important;}
@media(max-width:47.99rem){
 .fanyipins-ui-scope.shopping-ui:has(.shop-categories) .woocommerce-products-header{padding-block:.625rem .875rem;}
 .fanyipins-ui-scope.shopping-ui:has(.shop-categories) li.product .button{font-size:.8125rem;padding:.625rem .375rem;min-height:44px;}
}

/* Single-product Astra bridge hardening (v1.0.7).
   Astra may leave width/max-width/float constraints on .images/.summary.
   Reset all sizing inside the plugin-owned product grid so each column can fill its track. */
body.fanyipins-ui-shopping.single-product .shopping-ui .shop-product-layout{
  width:100%;
  max-width:none;
  min-width:0;
  display:grid;
  grid-template-columns:minmax(0,1.08fr) minmax(22rem,.92fr);
  gap:clamp(2rem,4vw,4rem);
  align-items:start;
}
body.fanyipins-ui-shopping.single-product .shopping-ui .shop-product-layout > :is(.images,.woocommerce-product-gallery,.summary){
  float:none!important;
  width:100%!important;
  max-width:none!important;
  min-width:0!important;
  margin:0!important;
  clear:none!important;
  box-sizing:border-box;
}
body.fanyipins-ui-shopping.single-product .shopping-ui .woocommerce-product-gallery{
  align-self:start;
}
body.fanyipins-ui-shopping.single-product .shopping-ui .summary{
  align-self:start;
}
@media(max-width:47.99rem){
  body.fanyipins-ui-shopping.single-product .shopping-ui .shop-product-layout{
    grid-template-columns:minmax(0,1fr);
    gap:1.5rem;
  }
}


/* 1.0.31 mobile viewport hardening.
   Keep the Shop and Contact page shells inside the visual viewport without
   disabling browser zoom. This also neutralizes Astra/container min-widths. */
@media(max-width:767px){
  body.fanyipins-ui-shopping,
  body.fanyipins-ui-contact{
    overflow-x:hidden;
    overflow-x:clip;
  }
  body.fanyipins-ui-shopping :is(#page,.site,.site-content,.ast-container,#primary,#main),
  body.fanyipins-ui-contact :is(#page,.site,.site-content,.ast-container,#primary,#main){
    width:100%;
    max-width:100%;
    min-width:0;
    box-sizing:border-box;
  }
  body.fanyipins-ui-shopping .fanyipins-ui-scope,
  body.fanyipins-ui-contact .fanyipins-ui-scope{
    width:100%;
    max-width:100%;
    min-width:0;
    overflow-x:clip;
  }
  body.fanyipins-ui-shopping .fanyi-ui .fanyi-container,
  body.fanyipins-ui-contact .fanyi-ui .fanyi-container{
    max-width:100%;
    min-width:0;
  }
}
