:root {
  --vp-shell-bg: rgba(15, 23, 42, 0.78);
  --vp-shell-bg-strong: rgba(15, 23, 42, 0.9);
  --vp-shell-card: rgba(255, 255, 255, 0.88);
  --vp-shell-text: #0f172a;
  --vp-shell-text-on-dark: #f8fafc;
  --vp-shell-muted: #64748b;
  --vp-shell-line: rgba(148, 163, 184, 0.28);
  --vp-shell-accent: #2563eb;
  --vp-shell-accent-soft: rgba(37, 99, 235, 0.12);
  --vp-shell-radius: 18px;
  --vp-shell-header-height: 62px;
  --vp-shell-dock-height: 76px;
  --vp-shell-bottom-space: calc(var(--vp-shell-dock-height) + max(18px, env(safe-area-inset-bottom)) + 24px);
}

body.vp-shell-active {
  --vp-dock-height: var(--vp-shell-dock-height);
}

.vp-shell-header {
  position: sticky;
  top: max(8px, env(safe-area-inset-top));
  z-index: 9996;
  width: min(100% - 20px, 1040px);
  min-height: var(--vp-shell-header-height);
  margin: 8px auto 10px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: var(--vp-shell-radius);
  background: var(--vp-shell-bg);
  color: var(--vp-shell-text-on-dark);
  box-shadow: 0 18px 44px rgba(15, 23, 42, 0.2);
  backdrop-filter: blur(18px);
  padding: 10px 12px;
}

.vp-shell-title-group {
  min-width: 0;
  display: grid;
  gap: 2px;
}

.vp-shell-brand {
  color: rgba(248, 250, 252, 0.68);
  font-size: 11px;
  font-weight: 900;
  letter-spacing: 0;
  text-transform: uppercase;
}

.vp-shell-screen {
  color: #fff;
  font-size: 1rem;
  font-weight: 950;
  line-height: 1.12;
}

.vp-shell-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex: 0 0 auto;
}

.vp-shell-button {
  min-height: 40px;
  border: 1px solid rgba(255, 255, 255, 0.2);
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.1);
  color: #fff;
  cursor: pointer;
  font: inherit;
  font-size: 0.86rem;
  font-weight: 850;
  text-decoration: none;
  padding: 8px 11px;
}

.vp-shell-button:hover,
.vp-shell-button:focus-visible {
  border-color: rgba(255, 255, 255, 0.42);
  background: rgba(255, 255, 255, 0.16);
  outline: none;
}

.vp-app-dock.vp-shell-dock {
  position: fixed;
  left: 50%;
  bottom: max(10px, env(safe-area-inset-bottom));
  z-index: 9997;
  width: min(calc(100vw - 20px), 640px);
  min-height: var(--vp-shell-dock-height);
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 6px;
  border: 1px solid rgba(255, 255, 255, 0.16);
  border-radius: 22px;
  background: var(--vp-shell-bg-strong);
  box-shadow: 0 18px 48px rgba(15, 23, 42, 0.24);
  backdrop-filter: blur(18px);
  transform: translateX(-50%);
  padding: 8px;
}

.vp-app-dock.vp-shell-dock .vp-dock-item,
.vp-shell-dock-item {
  min-width: 0;
  min-height: 58px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  gap: 4px;
  border: 1px solid transparent;
  border-radius: 16px;
  background: transparent;
  color: rgba(248, 250, 252, 0.74);
  cursor: pointer;
  font: inherit;
  font-size: 12px;
  font-weight: 800;
  line-height: 1.1;
  text-align: center;
  text-decoration: none;
  padding: 6px 4px;
}

.vp-app-dock.vp-shell-dock .vp-dock-item:hover,
.vp-app-dock.vp-shell-dock .vp-dock-item:focus-visible,
.vp-app-dock.vp-shell-dock .vp-dock-item.is-active,
.vp-shell-dock-item:hover,
.vp-shell-dock-item:focus-visible,
.vp-shell-dock-item.is-active {
  border-color: rgba(37, 99, 235, 0.36);
  background: rgba(37, 99, 235, 0.18);
  color: #fff;
  outline: none;
}

.vp-app-dock.vp-shell-dock .vp-dock-icon,
.vp-shell-dock-icon {
  color: #93c5fd;
  font-size: 12px;
  font-weight: 950;
}

.vp-shell-page-scan .vp-scan {
  padding-bottom: calc(var(--vp-shell-bottom-space) + 24px) !important;
}

.vp-shell-page-3d #vp-3d-page {
  padding-bottom: calc(var(--vp-shell-bottom-space) + 40px) !important;
}

.vp-shell-page-instruction {
  overflow-x: hidden;
}

.vp-shell-page-instruction #vp-instruction {
  width: min(100% - 20px, 1100px);
  box-sizing: border-box;
  padding-bottom: calc(var(--vp-shell-bottom-space) + 96px) !important;
  scroll-margin-bottom: calc(var(--vp-shell-bottom-space) + 24px);
}

.vp-shell-page-instruction .vp-inst-sticky {
  bottom: calc(var(--vp-shell-bottom-space) + 8px);
}

.vp-shell-page-instruction .vp-3d-fab {
  bottom: calc(var(--vp-shell-bottom-space) + 12px);
}

.vp-shell-page-3d-upload {
  overflow-x: hidden;
}

.vp-shell-page-3d-upload .vp3du-page {
  width: min(100% - 20px, 1180px);
  box-sizing: border-box;
  margin: 0 auto;
  padding-bottom: calc(var(--vp-shell-bottom-space) + 96px) !important;
  border-radius: 24px;
}

.vp-shell-page-3d-upload .vp3du-hero,
.vp-shell-page-3d-upload .vp3du-grid,
.vp-shell-page-3d-upload .vp3du-result,
.vp-shell-page-3d-upload .vp3du-actions {
  scroll-margin-bottom: calc(var(--vp-shell-bottom-space) + 24px);
}

.vp-shell-page-3d-upload .vp3du-actions {
  padding-bottom: calc(var(--vp-shell-bottom-space) + 8px);
}

.vp-shell-page-app {
  overflow-x: hidden;
}

.vp-shell-page-app .vp-app-page {
  width: min(100% - 20px, 1240px);
  box-sizing: border-box;
  margin: 0 auto;
  padding-bottom: calc(var(--vp-shell-bottom-space) + 88px) !important;
}

.vp-shell-page-app .vp-app-shell,
.vp-shell-page-app .vp-app-dashboard,
.vp-shell-page-app .vp-app-actions,
.vp-shell-page-app .vp-app-soon {
  scroll-margin-bottom: calc(var(--vp-shell-bottom-space) + 24px);
}

.vp-shell-page-login {
  overflow-x: hidden;
}

.vp-shell-page-login .vp-auth-page {
  width: min(100% - 20px, 760px);
  box-sizing: border-box;
  margin: 0 auto;
  padding-bottom: calc(var(--vp-shell-bottom-space) + 80px) !important;
}

.vp-shell-page-login .vp-auth-card,
.vp-shell-page-login .vp-d-status {
  scroll-margin-bottom: calc(var(--vp-shell-bottom-space) + 24px);
}

.vp-shell-page-3d #vp-3d-page > .vp-3d-top {
  display: none;
}

.vp-shell-page-3d .vp-3d-fab {
  bottom: calc(var(--vp-shell-bottom-space) + 12px);
}

.vp-shell-page-3d .vp-3d-load-overlay {
  bottom: calc(var(--vp-shell-bottom-space) + 10px);
}

.vp-shell-page-3d .vp-3d-help-panel {
  bottom: calc(var(--vp-shell-bottom-space) + 8px);
}

.vp-shell-page-3d #vp-3d-page.vp-3d-is-location-mode {
  padding-top: 0;
  padding-bottom: calc(var(--vp-shell-bottom-space) + 72px) !important;
}

.vp-shell-page-3d #vp-3d-page.vp-3d-is-location-mode #vp3d-location-card,
.vp-shell-page-3d #vp-3d-page.vp-3d-is-location-mode .vp-3d-location-navigation-shell {
  scroll-margin-bottom: calc(var(--vp-shell-bottom-space) + 28px);
}

.vp-shell-page-3d #vp-3d-page.vp-3d-is-location-mode .vp-3d-location-side-pane {
  padding-bottom: calc(var(--vp-shell-bottom-space) + 10px);
}

.vp-shell-page-3d #vp-3d-page.vp-3d-is-location-mode .vp-3d-share-panel {
  margin-bottom: calc(var(--vp-shell-bottom-space) + 16px);
  scroll-margin-bottom: calc(var(--vp-shell-bottom-space) + 24px);
}

@media (min-width: 900px) {
  .vp-shell-header {
    width: min(100% - 32px, 1280px);
  }

  .vp-shell-page-3d .vp-shell-header {
    width: min(100% - 32px, 1440px);
  }

  .vp-shell-page-instruction .vp-shell-header {
    width: min(100% - 32px, 1100px);
  }

  .vp-shell-page-3d-upload .vp-shell-header {
    width: min(100% - 32px, 1180px);
  }

  .vp-shell-page-app .vp-shell-header {
    width: min(100% - 32px, 1240px);
  }

  .vp-shell-page-login .vp-shell-header {
    width: min(100% - 32px, 760px);
  }

  .vp-app-dock.vp-shell-dock {
    width: min(92vw, 520px);
    min-height: 64px;
    border-radius: 20px;
  }

  body.vp-shell-active {
    --vp-shell-bottom-space: calc(var(--vp-shell-dock-height) + max(14px, env(safe-area-inset-bottom)) + 16px);
  }

  .vp-app-dock.vp-shell-dock .vp-dock-item,
  .vp-shell-dock-item {
    min-height: 48px;
  }
}

@media (max-width: 520px) {
  .vp-shell-header {
    width: calc(100vw - 16px);
    margin-top: 6px;
    padding: 9px;
  }

  .vp-shell-screen {
    font-size: 0.95rem;
  }

  .vp-shell-button {
    min-height: 38px;
    border-radius: 12px;
    font-size: 0.8rem;
    padding: 7px 9px;
  }

  .vp-app-dock.vp-shell-dock {
    width: calc(100vw - 16px);
    bottom: max(8px, env(safe-area-inset-bottom));
  }

  .vp-shell-page-instruction #vp-instruction {
    width: calc(100vw - 16px);
    border-radius: 18px;
    padding-left: 12px;
    padding-right: 12px;
    padding-bottom: calc(var(--vp-shell-bottom-space) + 112px) !important;
  }

  .vp-shell-page-instruction .vp-inst-sticky {
    left: 8px;
    right: 8px;
    border-radius: 16px;
  }

  .vp-shell-page-3d-upload .vp3du-page {
    width: calc(100vw - 16px);
    border-radius: 18px;
    padding-left: 12px;
    padding-right: 12px;
    padding-bottom: calc(var(--vp-shell-bottom-space) + 112px) !important;
  }

  .vp-shell-page-3d-upload .vp3du-actions {
    display: grid;
    grid-template-columns: 1fr;
  }

  .vp-shell-page-app .vp-app-page {
    width: calc(100vw - 16px);
    padding-left: 0;
    padding-right: 0;
    padding-bottom: calc(var(--vp-shell-bottom-space) + 104px) !important;
  }

  .vp-shell-page-login .vp-auth-page {
    width: calc(100vw - 16px);
    padding-left: 0;
    padding-right: 0;
    padding-bottom: calc(var(--vp-shell-bottom-space) + 104px) !important;
  }
}
