.gsfb-public-page,
.gsfb-manager-wrap {
  --gsfb-blue: #0e9dc8;
  --gsfb-blue-dark: #0c6f98;
  --gsfb-green: #5f9b38;
  --gsfb-bg: #f5f7fb;
  --gsfb-card: #ffffff;
  --gsfb-border: #dce4ec;
  --gsfb-text: #22313f;
  --gsfb-muted: #6c7a86;
  --gsfb-shadow: 0 12px 36px rgba(16, 65, 99, 0.12);
  color: var(--gsfb-text);
}

.gsfb-shell,
.gsfb-manager-wrap {
  max-width: 1320px;
  margin: 0 auto;
  padding: 24px 16px 48px;
}

.gsfb-public-page {
  background: linear-gradient(180deg, #f4f8fb 0%, #eef6f8 100%);
  padding: 18px 0 40px;
}

.gsfb-public-header,
.gsfb-manager-header {
  display: grid;
  grid-template-columns: 180px 1fr 180px;
  gap: 24px;
  align-items: center;
  background: var(--gsfb-card);
  border: 1px solid var(--gsfb-border);
  border-radius: 20px;
  box-shadow: var(--gsfb-shadow);
  padding: 22px;
  margin-bottom: 18px;
}

.gsfb-manager-header {
  grid-template-columns: 1fr auto;
}

.gsfb-title-side,
.gsfb-brand-inline {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 16px;
}

.gsfb-title-side img,
.gsfb-brand-inline img {
  max-width: 100%;
  max-height: 86px;
  object-fit: contain;
}

.gsfb-kicker {
  font-size: 12px;
  letter-spacing: 0.12em;
  color: var(--gsfb-blue-dark);
  font-weight: 700;
  margin-bottom: 8px;
}

.gsfb-title-center h1,
.gsfb-manager-header h2 {
  margin: 0;
  font-size: clamp(28px, 4vw, 42px);
  line-height: 1.05;
}

.gsfb-subtitle,
.gsfb-manager-header p {
  margin-top: 6px;
  font-size: 18px;
  color: var(--gsfb-blue-dark);
  font-weight: 600;
}

.gsfb-description {
  margin: 12px auto 0;
  max-width: 800px;
  color: var(--gsfb-muted);
}

.gsfb-password-box,
.gsfb-viewer-card,
.gsfb-card {
  background: var(--gsfb-card);
  border: 1px solid var(--gsfb-border);
  border-radius: 20px;
  box-shadow: var(--gsfb-shadow);
}

.gsfb-password-box {
  padding: 32px;
  text-align: center;
}

.gsfb-password-form {
  display: flex;
  gap: 12px;
  justify-content: center;
  flex-wrap: wrap;
  margin-top: 14px;
}

.gsfb-password-form input,
.gsfb-password-form button,
.gsfb-form-stack input[type="text"],
.gsfb-form-stack input[type="url"],
.gsfb-form-stack input[type="password"],
.gsfb-form-stack input[type="file"],
.gsfb-form-stack textarea,
.gsfb-form-stack select,
.gsfb-hotspot-form input,
.gsfb-hotspot-form textarea,
.gsfb-hotspot-form select {
  border: 1px solid #cfd9e2;
  border-radius: 12px;
  padding: 12px 14px;
  font-size: 14px;
  width: 100%;
  box-sizing: border-box;
  background: #fff;
}

.gsfb-password-form input {
  max-width: 300px;
}

.gsfb-password-form button,
.gsfb-toolbar button,
.gsfb-hotspot-buttons .button,
.gsfb-form-stack .button,
.gsfb-form-stack button.button,
.gsfb-form-stack button[type="submit"] {
  border: 0;
  border-radius: 12px;
  padding: 11px 16px;
  background: var(--gsfb-blue);
  color: #fff;
  cursor: pointer;
  font-weight: 600;
}

.gsfb-toolbar button {
  padding: 9px 12px;
  background: #eef6fb;
  color: var(--gsfb-text);
  border: 1px solid var(--gsfb-border);
}

.gsfb-toolbar button:hover,
.gsfb-password-form button:hover,
.gsfb-form-stack button:hover {
  filter: brightness(0.97);
}

.gsfb-viewer-card {
  padding: 12px;
}

.gsfb-toolbar {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  padding: 10px;
  border-bottom: 1px solid var(--gsfb-border);
}

.gsfb-toolbar-group {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  align-items: center;
}

.gsfb-toolbar-page {
  margin-left: auto;
  font-weight: 700;
}

.gsfb-viewer-layout {
  display: block;
  min-height: min(78vh, 980px);
}

.gsfb-thumbs-panel {
  display: none !important;
}

.gsfb-viewer-stage {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: min(78vh, 980px);
  background: linear-gradient(180deg, #f9fdff 0%, #f3f7fb 100%);
  overflow: hidden;
}

.gsfb-loading {
  position: absolute;
  top: 16px;
  left: 50%;
  transform: translateX(-50%);
  background: rgba(255,255,255,0.92);
  border: 1px solid var(--gsfb-border);
  padding: 8px 14px;
  border-radius: 999px;
  z-index: 15;
}

.gsfb-book-zoomwrap {
  transform-origin: center top;
  transition: transform .18s ease;
  padding: 24px;
  touch-action: pinch-zoom pan-x pan-y;
  overscroll-behavior: contain;
  display: flex;
  justify-content: center;
  width: 100%;
  box-sizing: border-box;
}

.gsfb-book {
  width: min(100%, 1120px);
  min-height: min(68vh, 820px);
  margin: 0 auto;
  overflow: visible;
}

.gsfb-page.is-cover,
.gsfb-page.is-back-cover {
  background: #fff;
}

.gsfb-page[data-density="hard"] .gsfb-page-inner {
  box-shadow: inset 0 0 0 1px rgba(0,0,0,0.04);
}

.gsfb-page {
  background: #fff;
  position: relative;
}

.gsfb-page-inner {
  position: relative;
  width: 100%;
  height: 100%;
}

.gsfb-page canvas,
.gsfb-page img {
  width: 100%;
  height: 100%;
  display: block;
}

.gsfb-hotspots-layer {
  position: absolute;
  inset: 0;
  pointer-events: auto;
  z-index: 6;
}

.gsfb-hotspot {
  position: absolute;
  z-index: 7;
  border: 2px solid rgba(14, 157, 200, 0.95);
  background: rgba(14, 157, 200, 0.12);
  border-radius: 8px;
  box-shadow: 0 0 0 0 rgba(14, 157, 200, 0.65);
  animation: gsfb-pulse 2.2s ease-in-out 2;
  pointer-events: auto;
  text-decoration: none;
  overflow: hidden;
}

.gsfb-hotspot:hover {
  background: rgba(14, 157, 200, 0.18);
  box-shadow: 0 0 0 8px rgba(14, 157, 200, 0.10);
}

.gsfb-hotspot-label {
  position: absolute;
  right: 8px;
  bottom: 8px;
  font-size: 11px;
  line-height: 1;
  padding: 6px 8px;
  border-radius: 999px;
  background: rgba(14, 157, 200, 0.92);
  color: #fff;
  font-weight: 700;
  letter-spacing: .02em;
}

@keyframes gsfb-pulse {
  0% { box-shadow: 0 0 0 0 rgba(14, 157, 200, 0.55); }
  70% { box-shadow: 0 0 0 12px rgba(14, 157, 200, 0); }
  100% { box-shadow: 0 0 0 0 rgba(14, 157, 200, 0); }
}

.gsfb-manager-grid,
.gsfb-two-col,
.gsfb-hotspot-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
}

.gsfb-card {
  padding: 20px;
}

.gsfb-card-spaced {
  margin-top: 18px;
}

.gsfb-form-stack {
  display: grid;
  gap: 14px;
}

.gsfb-form-stack label,
.gsfb-hotspot-form label {
  display: block;
  font-weight: 600;
  color: var(--gsfb-text);
}

.gsfb-form-stack label > input,
.gsfb-form-stack label > textarea,
.gsfb-form-stack label > select,
.gsfb-hotspot-form label > input,
.gsfb-hotspot-form label > textarea,
.gsfb-hotspot-form label > select {
  margin-top: 6px;
  font-weight: 400;
}

.gsfb-inline-fields {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}

.gsfb-section-head {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  align-items: flex-end;
  margin-bottom: 16px;
}

.gsfb-section-head span {
  color: var(--gsfb-muted);
  font-size: 14px;
}

.gsfb-list {
  display: grid;
  gap: 12px;
}

.gsfb-list-item {
  display: grid;
  grid-template-columns: 36px 88px 1fr;
  gap: 14px;
  align-items: center;
  border: 1px solid var(--gsfb-border);
  border-radius: 16px;
  padding: 12px;
  background: #fbfdff;
}

.gsfb-drag {
  font-size: 22px;
  cursor: grab;
  text-align: center;
  color: var(--gsfb-blue-dark);
}

.gsfb-list-thumb {
  width: 88px;
  height: 118px;
  border-radius: 10px;
  overflow: hidden;
  border: 1px solid var(--gsfb-border);
  display: flex;
  align-items: center;
  justify-content: center;
  background: #fff;
}

.gsfb-list-thumb img,
.gsfb-current-thumb img,
.gsfb-library-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.gsfb-list-main h4,
.gsfb-library-card h3,
.gsfb-card h3 {
  margin: 0 0 8px;
}

.gsfb-list-meta,
.gsfb-list-links {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 14px;
  color: var(--gsfb-muted);
  font-size: 13px;
}

.gsfb-list-links a,
.gsfb-library-card a {
  color: var(--gsfb-blue-dark);
  text-decoration: none;
  font-weight: 600;
}

.gsfb-notice {
  padding: 12px 14px;
  border-radius: 12px;
  margin-bottom: 16px;
}

.gsfb-success {
  background: #eefbf3;
  border: 1px solid #b6e2c3;
}

.gsfb-error {
  background: #fff1f2;
  border: 1px solid #f3c0c6;
}

.gsfb-categories-box {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  padding: 12px;
  border: 1px solid var(--gsfb-border);
  border-radius: 12px;
  margin-bottom: 12px;
  max-height: 210px;
  overflow: auto;
}

.gsfb-thumb-panel {
  border: 1px solid var(--gsfb-border);
  border-radius: 16px;
  padding: 14px;
  background: #fbfdff;
}

.gsfb-current-thumb {
  width: 200px;
  height: 280px;
  background: #fff;
  border: 1px solid var(--gsfb-border);
  border-radius: 12px;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 12px;
}

.gsfb-hotspot-stage {
  position: relative;
  overflow: auto;
  max-height: 860px;
  background: #f7fbfd;
  border: 1px solid var(--gsfb-border);
  border-radius: 16px;
  padding: 12px;
}

#gsfb-hotspot-canvas {
  display: block;
  max-width: 100%;
  height: auto;
  background: #fff;
  box-shadow: 0 10px 26px rgba(17, 36, 66, 0.12);
}

#gsfb-hotspot-overlay,
#gsfb-hotspot-drawing-box {
  position: absolute;
  top: 12px;
  left: 12px;
}

#gsfb-hotspot-overlay {
  pointer-events: none;
}

#gsfb-hotspot-drawing-box {
  border: 2px dashed var(--gsfb-blue-dark);
  background: rgba(14, 157, 200, .12);
  display: none;
}

.gsfb-hotspot-editor .gsfb-hotspot-toolbar {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 10px;
  align-items: center;
}

.gsfb-hotspot-list-wrap {
  margin-top: 18px;
}

.gsfb-hotspot-row {
  border: 1px solid var(--gsfb-border);
  border-radius: 12px;
  padding: 10px;
  background: #fbfdff;
  margin-bottom: 8px;
}

.gsfb-hotspot-row strong {
  display: block;
  margin-bottom: 4px;
}

.gsfb-hotspot-row code {
  font-size: 12px;
  word-break: break-all;
}

.gsfb-hotspot-actions {
  margin-top: 8px;
  display: flex;
  gap: 8px;
}

.gsfb-library-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 18px;
}

.gsfb-library-card {
  border: 1px solid var(--gsfb-border);
  border-radius: 18px;
  overflow: hidden;
  background: var(--gsfb-card);
  box-shadow: var(--gsfb-shadow);
}

.gsfb-library-thumb {
  display: block;
  aspect-ratio: 3 / 4;
  background: #f4f8fb;
}

.gsfb-thumb-placeholder {
  display: flex;
  height: 100%;
  align-items: center;
  justify-content: center;
  color: var(--gsfb-blue-dark);
  font-size: 28px;
  font-weight: 700;
}

.gsfb-library-body {
  padding: 16px;
}

.gsfb-library-subtitle {
  color: var(--gsfb-blue-dark);
  font-weight: 700;
  margin-bottom: 8px;
}

@media (max-width: 1080px) {
  .gsfb-public-header {
    grid-template-columns: 1fr;
    text-align: center;
  }

  .gsfb-manager-grid,
  .gsfb-two-col,
  .gsfb-hotspot-grid,
  .gsfb-inline-fields,
  .gsfb-categories-box {
    grid-template-columns: 1fr;
  }
  .gsfb-manager-header {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 700px) {
  .gsfb-shell,
  .gsfb-manager-wrap {
    padding-left: 10px;
    padding-right: 10px;
  }

  .gsfb-title-center h1,
  .gsfb-manager-header h2 {
    font-size: 28px;
  }

  .gsfb-list-item {
    grid-template-columns: 28px 70px 1fr;
  }

  .gsfb-viewer-stage {
    min-height: 520px;
  }
}


.gsfb-viewer-stage,
.gsfb-book-zoomwrap,
.gsfb-book,
.gsfb-book .stf__parent,
.gsfb-book .stf__wrapper,
.gsfb-book .stf__block,
.gsfb-book .stf__item {
  overflow: hidden !important;
}

.gsfb-book .stf__parent,
.gsfb-book .stf__wrapper,
.gsfb-book .stf__block {
  margin: 0 auto;
}

@media (max-width: 980px) {
  .gsfb-viewer-card {
    padding: 10px;
  }

  .gsfb-viewer-stage {
    min-height: 56vh;
  }

  .gsfb-book-zoomwrap {
    padding: 12px;
  }
}

.gsfb-hotspots-layer {
  cursor: pointer;
}
.gsfb-page .gsfb-hotspot {
  min-width: 28px;
  min-height: 28px;
}
@media (max-width: 900px) {
  .gsfb-public-header { grid-template-columns: 1fr; text-align: center; }
  .gsfb-viewer-stage { min-height: 68vh; }
  .gsfb-book { width: min(100%, 560px); }
}
