:root{
  --kfb-bg:#ffffff;
  --kfb-arrow-bg: rgba(255,255,255,.72);
  --kfb-arrow-border: rgba(0,0,0,.10);
  --kfb-arrow-shadow: 0 10px 30px rgba(0,0,0,.12);
  --kfb-arrow-color:#111;

  --kfb-loader-bg: rgba(255,255,255,.85);
  --kfb-loader-border: rgba(0,0,0,.08);
  --kfb-text:#111;
  --kfb-muted:#666;
}

.kfb{
  width: 100%;
  max-width: var(--kfb-maxw, 1200px);
  margin: 0 auto;
  background: var(--kfb-bg);
}

.kfb__stage{
  position: relative;
  width: 100%;
  height: min(86vh, 920px);
  background: var(--kfb-bg);
  overflow: hidden;
}

@media (max-width: 768px){
  .kfb__stage{
    height: 360px;
  }
}

.kfb__flip{
  width: 100%;
  height: 100%;
}

.kfb__page{
  width: 100%;
  height: 100%;
  background: #fff;
  display:flex;
  align-items:center;
  justify-content:center;
}

.kfb__page img{
  width:100%;
  height:100%;
  object-fit: contain;
  display:block;
}

.kfb__nav{
  position:absolute;
  inset: 0;
  pointer-events:none;
  z-index: 10;
}

.kfb__btn{
  pointer-events:auto;
  position:absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 64px;
  height: 64px;
  border-radius: 999px;
  border: 1px solid var(--kfb-arrow-border);
  background: var(--kfb-arrow-bg);
  box-shadow: var(--kfb-arrow-shadow);
  color: var(--kfb-arrow-color);
  display:flex;
  align-items:center;
  justify-content:center;
  cursor:pointer;
  user-select:none;
  font-size: 40px;
  line-height: 1;
}

.kfb__btn:hover{ border-color: rgba(0,0,0,.18); }
.kfb__btn:disabled{ opacity:.35; cursor:not-allowed; }

.kfb__btn--prev{ left: 12px; }
.kfb__btn--next{ right: 12px; }

.kfb__mobileBar{
  display:none;
  width: 100%;
  gap: 12px;
  padding: 8px 0 0;
  margin: 0;
  align-items:center;
  justify-content:space-between;
}

.kfb__mobileBtn{
  width: 56px;
  height: 56px;
  border-radius: 999px;
  border: 1px solid var(--kfb-arrow-border);
  background: var(--kfb-arrow-bg);
  box-shadow: var(--kfb-arrow-shadow);
  color: var(--kfb-arrow-color);
  display:flex;
  align-items:center;
  justify-content:center;
  cursor:pointer;
  user-select:none;
  font-size: 36px;
  line-height: 1;
}

.kfb__mobileBtn:disabled{ opacity:.35; cursor:not-allowed; }

.kfb__mobileInfo{
  flex: 1 1 auto;
  text-align:center;
  color: var(--kfb-muted);
  font-size: 13px;
}

@media (max-width: 768px){
  .kfb__nav{ display:none; }
  .kfb__mobileBar{ display:flex; }
}

.kfb__overlay{
  display: none;
}

@media (max-width: 768px){
  .kfb__overlay{
    display:block;
    position:absolute;
    inset:0;
    z-index: 5;
    background: transparent;
    touch-action: pan-y;
  }
}

.kfb__loader{
  position:absolute;
  inset: 0;
  display:flex;
  align-items:center;
  justify-content:center;
  background: var(--kfb-loader-bg);
  z-index: 20;
}

.kfb__loaderBox{
  width: min(520px, 92vw);
  background: #fff;
  border: 1px solid var(--kfb-loader-border);
  border-radius: 14px;
  padding: 16px;
  box-shadow: 0 12px 40px rgba(0,0,0,.10);
}

.kfb__loaderTitle{
  font-weight: 800;
  margin-bottom: 10px;
  color: var(--kfb-text);
}

.kfb__progress{
  height: 10px;
  background: rgba(0,0,0,.06);
  border-radius: 999px;
  overflow: hidden;
}

.kfb__progressBar{
  height: 100%;
  width: 0%;
  background: #111;
}

.kfb__progressText{
  margin-top: 8px;
  color: var(--kfb-muted);
  font-size: 12px;
}
