
:root {
  --bg: #06111f;
  --bg-2: #0a1526;
  --surface: rgba(15, 27, 45, 0.92);
  --surface-2: rgba(21, 36, 59, 0.92);
  --surface-3: rgba(255, 255, 255, 0.06);
  --line: rgba(255, 255, 255, 0.09);
  --line-strong: rgba(255, 255, 255, 0.16);
  --text: #f8fafc;
  --muted: #94a3b8;
  --muted-2: #64748b;
  --primary: #00d084;
  --primary-2: #14f195;
  --primary-soft: rgba(0, 208, 132, 0.14);
  --warning: #f59e0b;
  --danger: #ef4444;
  --card-shadow: 0 22px 60px rgba(0, 0, 0, 0.34);
  --soft-shadow: 0 14px 36px rgba(0, 0, 0, 0.22);
  --radius-xl: 28px;
  --radius-lg: 22px;
  --radius-md: 16px;
}

* {
  box-sizing: border-box;
  -webkit-tap-highlight-color: transparent;
}

html {
  background: var(--bg);
}

body {
  margin: 0;
  min-height: 100vh;
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;
  background:
    radial-gradient(circle at 20% -5%, rgba(0, 208, 132, 0.22), transparent 32%),
    radial-gradient(circle at 95% 10%, rgba(59, 130, 246, 0.18), transparent 28%),
    linear-gradient(180deg, #06111f 0%, #0a1526 48%, #07111f 100%);
  color: var(--text);
  overflow-x: hidden;
  color: var(--text);
  background: #000 !important;
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;
}

body::after {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  background-image:
    linear-gradient(rgba(255,255,255,0.025) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,0.025) 1px, transparent 1px);
  background-size: 32px 32px;
  mask-image: linear-gradient(180deg, rgba(0,0,0,0.7), transparent 72%);
  z-index: -1;
}

body.scanner-focus {
  overflow: hidden !important;
}

.app {
  max-width: 480px;
  min-height: 100vh;
  margin: 0 auto;
  padding-bottom: 108px;
  position: relative;
}

.topbar {
  position: fixed;
  top: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 100%;
  max-width: 480px;
  z-index: 999;
  padding: 0px 0px 22px;
  background:
    linear-gradient(135deg, rgba(15, 27, 45, 0.96), rgba(9, 19, 35, 0.94)),
    radial-gradient(circle at 85% 0%, rgba(0, 208, 132, 0.2), transparent 36%);
  backdrop-filter: blur(18px);
  color: var(--text);
  border-bottom: 1px solid var(--line);
  border-bottom-left-radius: 32px;
  border-bottom-right-radius: 32px;
  box-shadow: 0 18px 46px rgba(0,0,0,.32);
}

.topbar small {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--primary-2);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.topbar small::before {
  content: "";
  width: 8px;
  height: 8px;
  border-radius: 999px;
  background: var(--primary);
  box-shadow: 0 0 16px rgba(0, 208, 132, 0.9);
}

.topbar h1 {
  margin-top: -8px 0 0;
  font-size: 25px;
  line-height: 1.05;
  letter-spacing: -0.055em;
}

.content {
  padding: 118px 18px 18px;
}

.page.active {
  display: block;
}

@keyframes pageIn {
  from {
    opacity: 0;
    transform: translateY(8px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.stats {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  margin-top: 20px;
}

.stat-card,
.filters-card,
.table-card,
.profile-card,
.form-card,
.scan-result {
  position: relative;
  background:
    linear-gradient(180deg, rgba(21, 36, 59, 0.92), rgba(11, 22, 40, 0.92));
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  box-shadow: var(--soft-shadow);
  overflow: hidden;
}

.stat-card::before,
.filters-card::before,
.table-card::before,
.profile-card::before,
.form-card::before,
.scan-result::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background: linear-gradient(135deg, rgba(255,255,255,0.08), transparent 34%);
  opacity: 0.75;
}

.stat-card {
  padding: 17px;
  min-height: 118px;
}

.stat-card span {
  position: relative;
  display: block;
  font-size: 12px;
  color: var(--muted);
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.stat-card strong {
  position: relative;
  display: block;
  margin-top: 12px;
  font-size: 34px;
  line-height: 1;
  letter-spacing: -0.06em;
}

.stat-card:first-child {
  background:
    radial-gradient(circle at 90% 18%, rgba(0, 208, 132, 0.22), transparent 42%),
    linear-gradient(135deg, rgba(0, 208, 132, 0.2), rgba(15, 27, 45, 0.96));
  border-color: rgba(0, 208, 132, 0.22);
}

.stat-card:first-child::after {
  content: "\f468";
  font-family: "Font Awesome 6 Free";
  font-weight: 900;
  position: absolute;
  right: 16px;
  bottom: 14px;
  color: rgba(0, 208, 132, 0.22);
  font-size: 34px;
}

.stat-card:nth-child(2)::after {
  content: "\f058";
  font-family: "Font Awesome 6 Free";
  font-weight: 900;
  position: absolute;
  right: 16px;
  bottom: 14px;
  color: rgba(255, 255, 255, 0.12);
  font-size: 34px;
}

.section-title {
  margin: 24px 0 12px;
  font-size: 16px;
  font-weight: 900;
  color: var(--text);
  letter-spacing: -0.035em;
}

.order-list {
  display: grid;
  gap: 10px;
}

.order-card {
  position: relative;
  background:
    linear-gradient(135deg, rgba(15, 27, 45, 0.96), rgba(9, 19, 35, 0.92));
  padding: 16px 16px 16px 48px;
  border-radius: 18px;
  border: 1px solid var(--line);
  box-shadow: 0 10px 26px rgba(0,0,0,0.18);
}

.order-card::before {
  content: "\f00c";
  font-family: "Font Awesome 6 Free";
  font-weight: 900;
  position: absolute;
  left: 14px;
  top: 16px;
  width: 24px;
  height: 24px;
  border-radius: 999px;
  display: grid;
  place-items: center;
  background: var(--primary-soft);
  color: var(--primary);
  font-size: 12px;
}

.order-card .code {
  font-size: 15px;
  color: var(--text);
  font-weight: 900;
  word-break: break-word;
}

.order-card .meta {
  margin-top: 6px;
  font-size: 12px;
  color: var(--muted);
}

.empty {
  padding: 24px;
  border-radius: var(--radius-lg);
  background: rgba(15, 27, 45, 0.72);
  border: 1px dashed var(--line-strong);
  color: var(--muted);
  text-align: center;
}

.hidden {
  display: none !important;
}

.camera-controls {
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
  margin-bottom: 12px;
}

body.scanner-focus .camera-controls {
  position: fixed;
  left: 50%;
  top: calc(50% - 236px);
  transform: translateX(-50%);
  width: calc(100% - 36px);
  max-width: 452px;
  z-index: 1700;
  display: grid;
  grid-template-columns: 1fr 48px;
  gap: 10px;
  margin-bottom: 0;
}

.camera-controls select,
.camera-controls input,
.form-card input,
.form-card select,
.filters-card input,
.filters-card select {
  width: 100%;
  min-height: 48px;
  padding: 13px 14px;
  border-radius: 16px;
  border: 1px solid var(--line);
  background: rgba(15, 27, 45, 0.92);
  color: var(--text);
  font-size: 14px;
  font-weight: 800;
  outline: none;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.04);
}

.camera-controls select:focus,
.camera-controls input:focus,
.form-card input:focus,
.form-card select:focus,
.filters-card input:focus,
.filters-card select:focus {
  border-color: rgba(0, 208, 132, 0.55);
  box-shadow: 0 0 0 4px rgba(0, 208, 132, 0.12);
}

.camera-controls option,
.form-card option,
.filters-card option {
  background: #0f1b2d;
  color: var(--text);
}

.form-card label,
.filters-card label {
  display: block;
  margin: 16px 0 8px;
  font-size: 11px;
  font-weight: 900;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.09em;
}

.form-card,
.filters-card {
  padding: 18px;
}

.scanner-card {
  height: 344px;
  padding: 12px;
  border-radius: 30px;
  background:
    radial-gradient(circle at 50% 0%, rgba(0, 208, 132, 0.18), transparent 36%),
    #020617;
  box-shadow: var(--card-shadow);
  border: 1px solid rgba(0, 208, 132, 0.14);
  overflow: hidden;
  position: relative;
  transition: none;
}

body.scanner-focus .scanner-card {
  position: fixed;
  top: 50%;
  left: 50%;
  width: calc(100% - 36px);
  max-width: 452px;
  z-index: 1600;
  transform: translate(-50%, -50%);
}

#reader {
  width: 100%;
  height: 320px;
  border-radius: 22px;
  overflow: hidden;
  background: #020617;
  position: relative;
  touch-action: none;
}

#reader::after {
  content: "";
  position: absolute;
  inset: 14px;
  border: 1px solid rgba(0, 208, 132, 0.38);
  border-radius: 18px;
  pointer-events: none;
  box-shadow: inset 0 0 32px rgba(0, 208, 132, 0.08);
}

#reader video {
  width: 100% !important;
  height: 320px !important;
  object-fit: cover !important;
  border-radius: 22px;
}

.camera-placeholder {
  width: 100%;
  height: 320px;
  border-radius: 22px;
  border: 1px solid rgba(0, 208, 132, 0.22);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  color: var(--text);
  text-align: center;
  padding: 22px;
  background:
    radial-gradient(circle at center, rgba(0, 208, 132, 0.14), transparent 42%),
    #020617;
}

.camera-placeholder i {
  font-size: 38px;
  margin-bottom: 14px;
  color: var(--primary);
}

.permission-btn {
  border: none;
  border-radius: 16px;
  padding: 14px 18px;
  background: linear-gradient(135deg, var(--primary), var(--primary-2));
  color: #042012;
  font-size: 14px;
  font-weight: 900;
  cursor: pointer;
  box-shadow: 0 14px 30px rgba(0, 208, 132, 0.26);
}

.close-scanner-btn {
  width: 48px;
  height: 48px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: rgba(15, 27, 45, 0.95);
  color: var(--text);
  display: none;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  cursor: pointer;
  box-shadow: 0 10px 30px rgba(0,0,0,.25);
}

body.scanner-focus .close-scanner-btn {
  display: flex;
}

.scan-line {
  position: absolute;
  left: 12%;
  right: 12%;
  top: 50%;
  height: 2px;
  background: var(--primary);
  z-index: 10;
  display: none;
  box-shadow: 0 0 22px rgba(0, 208, 132, 0.95);
  pointer-events: none;
}

.scanner-active .scan-line {
  display: block;
  animation: scanPulse 1.3s ease-in-out infinite;
}

@keyframes scanPulse {
  0%, 100% { opacity: 0.45; transform: translateY(-28px); }
  50% { opacity: 1; transform: translateY(28px); }
}

.scan-result {
  margin-top: 16px;
  padding: 16px;
}

.scan-result label {
  font-size: 11px;
  font-weight: 900;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.09em;
}

#resultado {
  position: relative;
  margin-top: 10px;
  font-size: 16px;
  font-weight: 800;
  color: var(--text);
  word-break: break-word;
  white-space: pre-line;
  line-height: 1.4;
}

.btn {
  width: 100%;
  margin-top: 14px;
  padding: 15px;
  border: none;
  border-radius: 4px;
  background: linear-gradient(135deg, var(--primary), var(--primary-2));
  color: #042012;
  font-size: 15px;
  font-weight: 900;
  cursor: pointer;
  box-shadow: 0 14px 30px rgba(0, 208, 132, 0.2);
}

.btn.secondary {
  background: rgba(255, 255, 255, 0.06);
  color: var(--text);
  border: 1px solid var(--line);
  box-shadow: none;
}

.btn.info {
  background: rgba(42, 9, 224, 0.945);
  color: var(--text);
  border: 1px solid var(--line);
  box-shadow: none;
}

.btn.danger {
  background: linear-gradient(135deg, #ef4444, #fb7185);
  color: white;
  box-shadow: 0 14px 30px rgba(239, 68, 68, 0.2);
}

.hint {
  margin-top: 14px;
  padding: 14px 16px;
  border-radius: 18px;
  background: rgba(245, 158, 11, 0.12);
  color: #fbbf24;
  border: 1px solid rgba(245, 158, 11, 0.2);
  font-size: 13px;
  line-height: 1.45;
}

.table-card {
  margin-top: 14px;
  overflow: hidden;
}

table {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
}

th {
  background: rgba(0, 208, 132, 0.12);
  color: var(--primary-2);
  text-align: left;
  padding: 13px 12px;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}

td {
  padding: 13px 12px;
  border-bottom: 1px solid var(--line);
  color: var(--muted);
  word-break: break-word;
}

td strong {
  font-size: 13px;
  color: var(--text);
}

.pagination {
  display: grid;
  grid-template-columns: 48px 1fr 48px;
  gap: 10px;
  align-items: center;
  margin-top: 14px;
}

.pagination button {
  height: 46px;
  border: none;
  border-radius: 16px;
  background: rgba(15, 27, 45, 0.92);
  border: 1px solid var(--line);
  color: var(--text);
  cursor: pointer;
}

.pagination span {
  text-align: center;
  font-weight: 900;
  color: var(--muted);
  font-size: 13px;
}

.profile-card {
  padding: 26px 22px;
  text-align: center;
  margin-bottom: 16px;
}

.avatar {
  width: 88px;
  height: 88px;
  margin: 0 auto 14px;
  border-radius: 28px;
  background:
    radial-gradient(circle at 30% 20%, rgba(255,255,255,0.18), transparent 32%),
    linear-gradient(135deg, var(--primary), #2563eb);
  color: white;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 20px 44px rgba(0, 208, 132, 0.18);
}

.avatar i {
  font-size: 34px;
}

.profile-card h2 {
  margin: 0;
  font-size: 22px;
  letter-spacing: -0.04em;
}

.profile-card p {
  margin: 7px 0 0;
  color: var(--muted);
}

.bottom-nav {
  position: fixed;
  left: 50%;
  bottom: 14px;
  transform: translateX(-50%);
  width: calc(100% - 28px);
  max-width: 452px;
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 6px;
  padding: 8px;
  background: rgba(15, 27, 45, 0.88);
  backdrop-filter: blur(22px);
  border: 1px solid var(--line);
  border-radius: 28px;
  box-shadow: 0 18px 50px rgba(0,0,0,0.38);
  z-index: 1000;
}

.nav-btn {
  position: relative;
  min-height: 54px;
  padding: 9px 4px;
  border: none;
  border-radius: 20px;
  background: transparent;
  color: var(--muted);
  font-weight: 900;
  cursor: pointer;
  font-size: 10px;
}

.nav-btn i {
  display: block;
  margin-bottom: 4px;
  font-size: 17px;
}

.nav-btn.active {
  background: var(--primary-soft);
  color: var(--primary);
}

.nav-btn.active::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: 6px;
  transform: translateX(-50%);
  width: 5px;
  height: 5px;
  border-radius: 999px;
  background: var(--primary);
  box-shadow: 0 0 12px rgba(0, 208, 132, 0.95);
}

.btn i {
  margin-right: 6px;
}

.scan-modal {
  position: fixed;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background:
    radial-gradient(circle at center, rgba(0, 208, 132, 0.16), transparent 42%),
    rgba(0, 0, 0, 0.45);
  backdrop-filter: blur(10px);
  opacity: 0;
  visibility: hidden;
  transition: all 0.25s ease;
  z-index: 999999;
}

.scan-modal.show {
  opacity: 1;
  visibility: visible;
}

.scan-modal-card {
  width: 90%;
  max-width: 340px;
  background:
    linear-gradient(180deg, rgba(21, 36, 59, 0.96), rgba(10, 21, 38, 0.96));
  border: 1px solid rgba(0, 208, 132, 0.22);
  border-radius: 28px;
  padding: 32px 24px;
  text-align: center;
  box-shadow: 0 30px 90px rgba(0, 0, 0, 0.45);
  transform: scale(0.9);
  transition: transform 0.25s ease;
}

.scan-modal.show .scan-modal-card {
  transform: scale(1);
}

.scan-success-icon {
  width: 90px;
  height: 90px;
  margin: 0 auto 20px;
  border-radius: 30px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--primary-soft);
  border: 1px solid rgba(0, 208, 132, 0.25);
}

.scan-success-icon i {
  font-size: 42px;
  color: var(--primary);
}

.scan-modal-card h2 {
  margin: 0;
  color: var(--text);
  font-size: 24px;
  letter-spacing: -0.045em;
}

.scan-modal-card p {
  margin-top: 10px;
  color: var(--muted);
  font-size: 16px;
  line-height: 1.4;
}

.scan-modal-card strong {
  display: inline-block;
  margin-top: 6px;
  color: var(--primary-2);
  font-size: 18px;
}

@media (max-width: 360px) {
  .content {
    padding-left: 14px;
    padding-right: 14px;
  }

  .stats {
    gap: 10px;
  }

  .stat-card {
    padding: 15px;
  }

  .nav-btn span {
    display: none;
  }
}

/* Campo de resultado removido da tela Scanner */
#scannerPage .scan-result,
#scannerPage .hint {
  display: none !important;
}

/* Correção para vídeo da câmera em alguns Android/WebView */
#reader video,
#reader canvas {
  display: block !important;
  opacity: 1 !important;
  visibility: visible !important;
}


/* Correção do filtro de data vazando do card */
.filters-card {
  width: 100%;
  max-width: 100%;
}

.filters-card input,
.filters-card select {
  max-width: 100%;
  min-width: 0;
  display: block;
}

.filters-card input[type="date"] {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  appearance: none;
  -webkit-appearance: none;
}

/* Desativa rolagem na aba Scanner */
body.scanner-page-active {
  overflow: hidden;
  height: 100vh;
}

body.scanner-page-active .app {
  height: 100vh;
  overflow: hidden;
}

body.scanner-page-active .content {
  height: 100vh;
  overflow: hidden;
}

body.scanner-page-active #scannerPage {
  height: calc(100vh - 118px);
  overflow: hidden;
}


/* Menu Mais */
.bottom-nav {
  overflow: visible;
}

.more-menu {
  position: absolute;
  right: 8px;
  bottom: calc(100% + 12px);
  min-width: 168px;
  padding: 8px;
  border-radius: 20px;
  background:
    linear-gradient(180deg, rgba(21, 36, 59, 0.98), rgba(10, 21, 38, 0.98));
  border: 1px solid var(--line);
  box-shadow: 0 20px 60px rgba(0,0,0,.42);
  backdrop-filter: blur(18px);
  opacity: 0;
  visibility: hidden;
  transform: translateY(10px) scale(.96);
  transform-origin: right bottom;
  transition: .2s ease;
  z-index: 1200;
}

.more-menu.show {
  opacity: 1;
  visibility: visible;
  transform: translateY(0) scale(1);
}

.more-menu button {
  width: 100%;
  height: 44px;
  border: 0;
  border-radius: 14px;
  background: transparent;
  color: var(--text);
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 0 12px;
  font-size: 14px;
  font-weight: 800;
  cursor: pointer;
  text-align: left;
}

.more-menu button:hover,
.more-menu button:active {
  background: var(--primary-soft);
  color: var(--primary);
}

.more-menu button i {
  width: 18px;
}


/* Zoom por arraste na página */
body.scanner-page-active,
body.scanner-focus {
  touch-action: none;
  user-select: none;
}

body.zoom-dragging #reader::before {
  content: "Arraste para cima ou para baixo para controlar o zoom";
  position: absolute;
  left: 50%;
  bottom: 18px;
  transform: translateX(-50%);
  width: calc(100% - 44px);
  z-index: 30;
  padding: 10px 12px;
  border-radius: 14px;
  background: rgba(2, 6, 23, 0.72);
  color: var(--text);
  font-size: 12px;
  font-weight: 800;
  text-align: center;
  backdrop-filter: blur(10px);
  pointer-events: none;
}

/* Modal de duplicidade */
.scan-modal.duplicate .scan-modal-card {
  border-color: rgba(239, 68, 68, 0.35);
}

.scan-modal.duplicate .scan-success-icon {
  background: rgba(239, 68, 68, 0.14);
  border-color: rgba(239, 68, 68, 0.3);
}

.scan-modal.duplicate .scan-success-icon i,
.scan-modal.duplicate .scan-modal-card strong {
  color: #fb7185;
}


/* Scanner agora é overlay, não tab */
.scanner-overlay-app {
  display: none;
}

body.scanner-focus .scanner-overlay-app {
  display: block;
}

body.scanner-focus .scanner-overlay-app .camera-controls,
body.scanner-focus .scanner-overlay-app .scanner-card {
  display: grid;
}

.bottom-nav {
  grid-template-columns: repeat(4, 1fr);
}


/* Exibição em uma linha com rolagem horizontal quando necessário */
.table-card {
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
}

.table-card table {
  min-width: 620px;
  table-layout: auto;
}

.table-card th,
.table-card td {
  white-space: nowrap;
  word-break: normal;
}

.table-card td strong {
  white-space: nowrap;
}

.order-card .code,
.order-card .meta {
  white-space: nowrap;
  word-break: normal;
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  padding-bottom: 2px;
}

.order-card .code::-webkit-scrollbar,
.order-card .meta::-webkit-scrollbar,
.table-card::-webkit-scrollbar {
  height: 4px;
}

.order-card .code::-webkit-scrollbar-thumb,
.order-card .meta::-webkit-scrollbar-thumb,
.table-card::-webkit-scrollbar-thumb {
  background: rgba(0, 208, 132, 0.45);
  border-radius: 999px;
}

.order-card .code::-webkit-scrollbar-track,
.order-card .meta::-webkit-scrollbar-track,
.table-card::-webkit-scrollbar-track {
  background: transparent;
}


/* Dashboard com rolagem para últimos 20 pedidos */
.order-list{
  max-height: 520px;
  overflow-y: auto;
  padding-right: 4px;
}

.order-list::-webkit-scrollbar{
  width: 5px;
}

.order-list::-webkit-scrollbar-thumb{
  background: rgba(0,208,132,.45);
  border-radius: 999px;
}


/* Login / Cadastro */
.auth-page { min-height: 100vh; overflow: hidden; }
.auth-shell { width: 100%; max-width: 480px; min-height: 100vh; margin: 0 auto; padding: 24px 18px; display: flex; align-items: center; justify-content: center; }
.auth-card { width: 100%; padding: 24px; border-radius: 32px; background: radial-gradient(circle at 90% 0%, rgba(0, 208, 132, 0.18), transparent 38%), linear-gradient(180deg, rgba(21, 36, 59, 0.96), rgba(10, 21, 38, 0.96)); border: 1px solid var(--line); box-shadow: var(--card-shadow); }
.auth-brand { text-align: center; margin-bottom: 20px; }
.auth-logo { width: 74px; height: 74px; margin: 0 auto 14px; border-radius: 24px; display: grid; place-items: center; background: var(--primary-soft); border: 1px solid rgba(0, 208, 132, 0.24); color: var(--primary); font-size: 30px; }
.auth-brand small { color: var(--primary-2); font-weight: 900; text-transform: uppercase; letter-spacing: 0.08em; font-size: 11px; }
.auth-brand h1 { margin: 8px 0 6px; font-size: 32px; letter-spacing: -0.06em; }
.auth-brand p { margin: 0; color: var(--muted); font-size: 14px; line-height: 1.45; }
.auth-tabs { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; padding: 6px; border-radius: 18px; background: rgba(255,255,255,0.05); border: 1px solid var(--line); margin-bottom: 18px; }
.auth-tabs button { height: 44px; border: 0; border-radius: 14px; background: transparent; color: var(--muted); font-weight: 900; cursor: pointer; }
.auth-tabs button.active { background: var(--primary-soft); color: var(--primary); }
.auth-form { display: none; }
.auth-form.active { display: block; }
.auth-form label { display: block; margin: 14px 0 8px; color: var(--muted); font-size: 11px; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; }
.auth-form input { width: 100%; min-height: 50px; padding: 13px 14px; border-radius: 16px; border: 1px solid var(--line); background: rgba(15, 27, 45, 0.92); color: var(--text); outline: none; font-weight: 800; }
.auth-message { min-height: 20px; margin: 14px 0 0; color: #fb7185; font-size: 13px; text-align: center; font-weight: 800; }


/* Modal de CEP e número */
.cep-modal{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at center,rgba(0,208,132,.14),transparent 42%),rgba(0,0,0,.56);backdrop-filter:blur(10px);opacity:0;visibility:hidden;transition:.25s ease;z-index:999998;padding:18px}
.cep-modal.show{opacity:1;visibility:visible}
.cep-modal-card{width:100%;max-width:420px;padding:20px;border-radius:28px;background:linear-gradient(180deg,rgba(21,36,59,.98),rgba(10,21,38,.98));border:1px solid var(--line);box-shadow:0 30px 90px rgba(0,0,0,.48)}
.cep-modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.cep-modal-header small{color:var(--primary-2);font-size:11px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}
.cep-modal-header h2{margin:6px 0 0;font-size:22px;letter-spacing:-.04em}
.cep-close-btn{width:44px;height:44px;border:1px solid var(--line);border-radius:15px;background:rgba(255,255,255,.06);color:var(--text);font-size:17px}
.cep-modal-text{margin:14px 0;color:var(--muted);font-size:13px;line-height:1.45}
.cep-modal-card label{display:block;margin:14px 0 8px;color:var(--muted);font-size:11px;font-weight:900;letter-spacing:.08em;text-transform:uppercase}
.cep-input{width:100%;min-height:50px;padding:13px 14px;border-radius:16px;border:1px solid var(--line);background:rgba(15,27,45,.92);color:var(--text);outline:none;font-size:16px;font-weight:900}

/* Evita zoom em inputs e duplo toque */
input,select,textarea,button{font-size:16px;touch-action:manipulation}

/* Últimos pedidos sem vazar */
.order-card{min-width:0;overflow:hidden}
.order-card .code,.order-card .meta{display:block;width:100%;max-width:100%;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis;word-break:normal!important;padding-bottom:0}
.order-card .code{font-size:clamp(13px,3.7vw,15px)}
.order-card .meta{font-size:clamp(11px,3.1vw,12px)}


/* Busca de endereço por CEP */
.cep-status {
  margin-top: 12px;
  padding: 11px 12px;
  border-radius: 14px;
  background: rgba(0, 208, 132, 0.1);
  border: 1px solid rgba(0, 208, 132, 0.18);
  color: var(--primary-2);
  font-size: 13px;
  font-weight: 800;
}

.cep-status.error {
  background: rgba(239, 68, 68, 0.12);
  border-color: rgba(239, 68, 68, 0.22);
  color: #fb7185;
}

.cep-preview {
  margin-top: 14px;
  padding: 14px;
  border-radius: 18px;
  background: rgba(255, 255, 255, 0.055);
  border: 1px solid var(--line);
}

.cep-preview small {
  display: block;
  color: var(--primary-2);
  font-size: 10px;
  font-weight: 900;
  letter-spacing: .08em;
  text-transform: uppercase;
  margin-bottom: 6px;
}

.cep-preview strong {
  display: block;
  color: var(--text);
  font-size: 15px;
  line-height: 1.35;
  margin-bottom: 4px;
}

.cep-preview span {
  display: block;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.35;
  margin-bottom: 10px;
}

.cep-textarea {
  width: 100%;
  min-height: 86px;
  resize: vertical;
  padding: 13px 14px;
  border-radius: 16px;
  border: 1px solid var(--line);
  background: rgba(15, 27, 45, 0.92);
  color: var(--text);
  outline: none;
  font-size: 16px;
  font-weight: 800;
  line-height: 1.4;
}



/* Rolagem do modal somente após carregar o CEP */
.cep-modal .cep-modal-card {
  max-height: none;
  overflow-y: visible;
}

.cep-modal.allow-scroll .cep-modal-card {
  max-height: calc(100vh - 36px);
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}

.cep-modal.allow-scroll .cep-modal-card::-webkit-scrollbar {
  width: 5px;
}

.cep-modal.allow-scroll .cep-modal-card::-webkit-scrollbar-thumb {
  background: rgba(0, 208, 132, 0.45);
  border-radius: 999px;
}


/* Correção definitiva: troca de tabs sempre volta ao topo */
html, body {
  scroll-behavior: auto !important;
  background: #000 !important;
}

.app,
.content {
  overflow: visible;
}

.page {
  scroll-margin-top: 0;
  display: none;
  animation: pageIn 0.28s ease;
}

/* Durante troca de tabs, impede restauração visual de scroll */
body.changing-tab {
  overflow-anchor: none;
}

body.changing-tab * {
  overflow-anchor: none !important;
}

/* Evita que elementos antigos atrás da nav capturem toque durante troca */
.bottom-nav {
  z-index: 99999 !important;
}


/* ===== Repaginação mobile premium inspirada nos prints ===== */
:root {
  --bg: #000000;
  --bg-2: #050505;
  --surface: #171717;
  --surface-2: #202020;
  --surface-3: #2b2b2b;
  --line: rgba(255,255,255,.18);
  --line-strong: rgba(255,255,255,.28);
  --text: #f7f7f7;
  --muted: #a7a7a7;
  --muted-2: #6f6f6f;
  --primary: #ffffff;
  --primary-2: #ffffff;
  --primary-soft: rgba(255,255,255,.12);
  --card-shadow: none;
  --soft-shadow: none;
}

body::after,
body::before {
  display: none !important;
}

.app {
  max-width: 480px;
  padding-bottom: 108px;
  background: #000;
}

.topbar {
  position: sticky;
  top: 0;
  left: auto;
  transform: none;
  width: 100%;
  max-width: 480px;
  padding: 14px 4px 22px;
  background: #000;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  backdrop-filter: none;
  z-index: 90;
  text-align: left;
}

.topbar small {
  color: var(--muted);
  font-size: 12px;
  letter-spacing: .04em;
  text-transform: none;
}

.topbar small::before {
  display: none;
}

.topbar h1 {
  margin-top: 8px;
  color: #fff;
  font-size: 25px;
  line-height: 1.05;
  letter-spacing: -.055em;
}

.content {
  padding: 0 24px 132px;
}

/* Início */
.stats {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
  margin-top: 12px;
}

.stat-card {
  min-height: 132px;
  padding: 22px 20px;
  border-radius: 5px;
  background: #181818 !important;
  border: 1px solid rgba(255,255,255,.16);
  box-shadow: none;
}

.stat-card::before {
  display: none;
}

.stat-card span {
  color: #bdbdbd;
  font-size: 13px;
  letter-spacing: .11em;
}

.stat-card strong {
  margin-top: 28px;
  color: #fff;
  font-size: 42px;
  letter-spacing: -.04em;
}

.stat-card:first-child,
.stat-card:nth-child(2) {
  background: #181818 !important;
  border-color: rgba(255,255,255,.16);
}

.stat-card:first-child::after,
.stat-card:nth-child(2)::after {
  opacity: .18;
  color: #fff;
}

.d-flex,
.dashboard-actions {
  display: grid !important;
  grid-template-columns: 1fr;
  gap: 12px;
  margin: 26px 0 30px;
}

.btn {
  min-height: 58px;
  margin-top: 0;
  border-radius: 4px;
  background: #f2f2f2;
  color: #000;
  box-shadow: none;
  font-size: 16px;
  font-weight: 900;
}

.btn i {
  margin-right: 10px;
}

.btn.info {
  background: #1f1f1f;
  border: 1px solid rgba(255,255,255,.16);
  color: #fff;
}

.btn.secondary {
  background: #202020;
  border: 1px solid rgba(255,255,255,.16);
  color: #fff;
}

.btn.danger {
  background: #2b1515;
  color: #fff;
}

.section-title {
  margin: 26px 0 16px;
  color: #fff;
  font-size: 23px;
  letter-spacing: -.04em;
}

.order-list {
  max-height: 520px;
  overflow-y: auto;
  display: grid;
  gap: 0;
  border-top: 1px solid rgba(255,255,255,.12);
}

.order-card {
  min-height: 92px;
  padding: 18px 0 18px 56px;
  border-radius: 0;
  border: 0;
  border-bottom: 1px solid rgba(255,255,255,.12);
  background: transparent !important;
  box-shadow: none;
}

.order-card::before {
  left: 4px;
  top: 22px;
  width: 34px;
  height: 34px;
  background: transparent;
  color: #fff;
  border: 1px solid rgba(255,255,255,.4);
}

.order-card .code {
  color: #fff;
  font-size: 18px;
  line-height: 1.25;
  font-weight: 900;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis;
}

.order-card .meta {
  margin-top: 7px;
  color: #999;
  font-size: 14px;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis;
}

/* Conta */
.account-page .top-spacer {
  display: none;
}

.account-hero {
  padding-top: 8px;
}

.account-top-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 58px;
}

.round-icon-btn {
  position: relative;
  width: 62px;
  height: 56px;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,.18);
  background: #171717;
  color: #fff;
  font-size: 22px;
}

.round-icon-btn span {
  position: absolute;
  right: 4px;
  top: 4px;
  width: 13px;
  height: 13px;
  border-radius: 50%;
  background: #2877ff;
}

.account-user-block h2 {
  margin: 0;
  color: #fff;
  font-size: 22px;
  letter-spacing: -.03em;
}

.account-user-block p {
  margin: 8px 0 0;
  color: #9c9c9c;
  font-size: 18px;
}

.account-menu {
  margin-top: 58px;
  display: grid;
  gap: 0;
}

.account-menu button {
  min-height: 78px;
  width: 100%;
  border: 0;
  background: transparent;
  color: #fff;
  display: grid;
  grid-template-columns: 46px 1fr 20px;
  align-items: center;
  gap: 16px;
  text-align: left;
  font-size: 20px;
  font-weight: 900;
}

.account-menu button > i:first-child {
  font-size: 25px;
  color: #fff;
}

.account-menu button > i:last-child {
  font-size: 19px;
  color: #fff;
}

.account-section-title {
  margin: 64px 0 24px;
  color: #fff;
  font-size: 22px;
  font-weight: 900;
  letter-spacing: -.03em;
}

.subscription-card {
  min-height: 92px;
  border: 1px solid rgba(255,255,255,.25);
  background: #121212;
  border-radius: 4px;
  padding: 18px 18px;
  display: grid;
  grid-template-columns: 52px 1fr 18px;
  gap: 14px;
  align-items: center;
}

.subscription-card strong {
  display: block;
  font-size: 18px;
  color: #fff;
}

.subscription-card span {
  display: block;
  margin-top: 6px;
  color: #888;
  font-size: 14px;
}

.profile-editor {
  padding-top: 6px;
}

.screen-title-row {
  display: grid;
  grid-template-columns: 44px 1fr 44px;
  align-items: center;
  margin-bottom: 26px;
}

.screen-title-row h2 {
  margin: 0;
  text-align: center;
  font-size: 28px;
  color: #fff;
}

.back-btn {
  width: 42px;
  height: 42px;
  border: 0;
  background: transparent;
  color: #fff;
  font-size: 22px;
}

.info-box,
.edit-card,
.form-card,
.filters-card,
.table-card,
.profile-card {
  border-radius: 4px;
  background: #181818 !important;
  border: 1px solid rgba(255,255,255,.22);
  box-shadow: none;
}

.info-box {
  display: grid;
  grid-template-columns: 34px 1fr;
  gap: 14px;
  padding: 20px;
  margin-bottom: 24px;
}

.info-box p {
  margin: 0 0 16px;
  color: #e5e5e5;
  font-size: 17px;
  line-height: 1.35;
}

.info-box button {
  width: 100%;
  min-height: 48px;
  border: 0;
  border-radius: 4px;
  background: #252525;
  color: #fff;
  font-weight: 900;
  font-size: 15px;
}

.edit-card {
  margin-bottom: 14px;
  padding: 18px;
}

.edit-card label,
.form-card label,
.filters-card label {
  margin: 0 0 8px;
  color: #fff;
  font-size: 20px;
  letter-spacing: -.02em;
  text-transform: none;
}

.edit-card input,
.form-card input,
.form-card select,
.filters-card input,
.filters-card select,
.camera-controls select,
.cep-input,
.cep-textarea {
  background: transparent;
  border: 0;
  border-radius: 0;
  color: #cfcfcf;
  padding: 0;
  min-height: 36px;
  box-shadow: none;
  font-size: 17px;
}

/* Pedidos */
.orders-page .filters-card {
  margin-top: 10px;
  padding: 18px;
}

.table-card {
  margin-top: 18px;
  overflow-x: auto;
}

table {
  min-width: 680px;
}

th {
  background: #202020;
  color: #fff;
}

td {
  color: #cfcfcf;
}

td strong {
  color: #fff;
}

.pagination button {
  background: #181818;
  border: 1px solid rgba(255,255,255,.18);
}

/* Bottom nav mais discreta */
.bottom-nav {
  width: calc(100% - 36px);
  max-width: 430px;
  bottom: 16px;
  padding: 8px;
  border-radius: 32px;
  background: rgba(18,18,18,.92);
  border: 1px solid rgba(255,255,255,.16);
  backdrop-filter: blur(20px);
  z-index: 99999 !important;
}

.nav-btn {
  min-height: 58px;
  border-radius: 24px;
  color: #9b9b9b;
  font-size: 11px;
}

.nav-btn i {
  font-size: 19px;
}

.nav-btn.active {
  background: #202020;
  color: #fff;
}

.nav-btn.active::after {
  background: #fff;
  box-shadow: none;
}

/* Modais */
.cep-modal-card,
.scan-modal-card,
.more-menu {
  background: #181818 !important;
  border: 1px solid rgba(255,255,255,.22);
  border-radius: 6px;
}

.cep-modal-header h2,
.scan-modal-card h2 {
  color: #fff;
}

.cep-modal-header small,
.cep-status,
.cep-preview small {
  color: #fff;
}

.cep-preview {
  background: #111;
  border-color: rgba(255,255,255,.18);
}

.empty {
  background: #181818;
  border: 1px solid rgba(255,255,255,.18);
  border-radius: 4px;
  color: #aaa;
}

.hidden {
  display: none !important;
}


/* ===== Layout Starlink fiel para Início/Menu/Perfil/Pedidos ===== */
.home-hero-screen {
  min-height: calc(100vh - 100px);
  padding-top: 0;
}

.home-topbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-top: 15px;
}

.home-icon-btn {
  height: 54px;
  border: 0;
  background: transparent;
  color: #fff;
  font-size: 24px;
}

.hero-copy {
  min-height: 360px;
  padding: 64px 10px 24px;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  text-align: center;
}

.hero-copy h2 {
  margin: 0;
  color: #fff;
  font-size: 30px;
  line-height: 1.05;
  letter-spacing: -.04em;
}

.hero-copy p {
  margin: 22px auto 0;
  max-width: 330px;
  color: rgba(255,255,255,.82);
  font-size: 20px;
  line-height: 1.4;
}

.home-hero-screen .stats,
.home-hero-screen .section-title,
.home-hero-screen .order-list {
  display: none !important;
}

.home-hero-screen .d-flex,
.home-hero-screen .dashboard-actions {
  position: fixed;
  left: 50%;
  bottom: 28px;
  width: calc(100% - 48px);
  max-width: 430px;
  transform: translateX(-50%);
  z-index: 1000;
  display: grid !important;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin: 0;
}

.home-hero-screen .d-flex::before,
.home-hero-screen .dashboard-actions::before {
  content: "Pré-visualizar a entrega";
  grid-column: 1 / -1;
  min-height: 58px;
  border-radius: 4px;
  background: rgba(35,35,35,.9);
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 900;
  font-size: 18px;
}

.home-hero-screen .btn {
  min-height: 64px;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}

.home-hero-screen .btn:first-child {
  background: rgba(35,35,35,.92);
  color: #fff;
}

.home-hero-screen .btn.info {
  background: #fff;
  color: #000;
}

.home-hero-screen + .scanner-overlay-app,
.home-hero-screen ~ .bottom-nav {
  display: none;
}

body:not(.scanner-focus) .bottom-nav {
  display: none;
}

/* overlays */
.overlay-screen {
  position: fixed;
  inset: 0;
  z-index: 90000;
  background: #000;
  color: #fff;
  overflow-y: auto;
  padding: 54px 28px 32px;
}

.overlay-screen.hidden {
  display: none !important;
}

.menu-actions {
  display: flex;
  align-items: center;
  margin-bottom: 64px;
  margin-top: -20px;
}

.pill-action {
  position: relative;
  width: 45px;
  height: 45px;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,.16);
  background: #151515;
  color: #fff;
  font-size: 24px;
  margin-right: 6px;
}

.pill-action span {
  position: absolute;
  top: 7px;
  right: 4px;
  width: 13px;
  height: 13px;
  background: #2877ff;
  border-radius: 50%;
}

.round-next {
  margin-left: auto;
  width: 45px;
  height: 45px;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,.14);
  background: #151515;
  color: #fff;
  font-size: 23px;
}

.menu-user h2 {
  margin: 0;
  font-size: 22px;
  letter-spacing: -.03em;
}

.menu-user p,
.menu-sub-code {
  margin: 10px 0 0;
  color: #aaa;
  font-size: 18px;
}

.menu-list {
  margin-top: 56px;
  display: grid;
}

.menu-list button {
  min-height: 50px;
  border: 0;
  background: transparent;
  color: #fff;
  display: grid;
  grid-template-columns: 50px 1fr 18px;
  align-items: center;
  gap: 16px;
  text-align: left;
}

.menu-list i:first-child {
  font-size: 26px;
}

.menu-list strong {
  font-size: 20px;
}

.menu-section-title {
  margin-top: 60px;
  font-size: 23px;
  font-weight: 900;
}

.menu-subscription {
  margin-top: 54px;
}

.menu-footer {
  margin-top: 100px;
  display: flex;
  align-items: center;
  gap: 18px;
}

.menu-footer strong {
  letter-spacing: .22em;
  font-size: 21px;
}

.menu-footer span {
  color: #888;
  font-size: 17px;
}

.menu-footer button {
  margin-left: auto;
  width: 45px;
  height: 45px;
  border-radius: 50%;
  border: 1px solid rgba(255,255,255,.16);
  background: #151515;
  color: #fff;
  font-size: 20px;
}

/* profile screen */
.profile-editor {
  display: block;
}

.account-page .account-hero,
.account-page .account-menu,
.account-page .account-section-title,
.account-page .subscription-card {
  display: none;
}

#profileEditor.hidden {
  display: block !important;
}

.account-page:not(.active) #profileEditor {
  display: none !important;
}

.info-box,
.edit-card {
  border: 1px solid rgba(255,255,255,.22);
  background: #171717 !important;
  border-radius: 4px;
}

.edit-card {
  position: relative;
}

.edit-card::after {
  content: "";
  font-family: "Font Awesome 6 Free";
  font-weight: 900;
  position: absolute;
  right: 22px;
  top: 50%;
  color: #fff;
  transform: translateY(-50%);
}

.edit-card input {
  width: calc(100% - 46px);
}

.profile-editor .btn {
  margin-top: 28px;
  background: #1d1d1d;
  color: #fff;
  border-radius: 4px !important;
}

/* billing */
.billing-balance-card {
  padding: 24px;
  border-radius: 10px;
  background: #181818;
  border: 1px solid rgba(255,255,255,.16);
  margin-bottom: 26px;
}

.billing-balance-card span {
  color: #aaa;
  font-size: 20px;
}

.billing-balance-card strong {
  display: block;
  margin: 8px 0 24px;
  font-size: 44px;
}

.billing-balance-card button {
  width: 100%;
  min-height: 52px;
  border: 0;
  border-radius: 4px;
  background: #5a5a5a;
  color: #111;
  font-weight: 900;
  font-size: 16px;
}

.billing-list button {
  width: 100%;
  min-height: 86px;
  border: 0;
  background: transparent;
  color: #fff;
  display: grid;
  grid-template-columns: 50px 1fr 22px;
  gap: 16px;
  align-items: center;
  text-align: left;
}

.billing-list button > i:first-child {
  font-size: 24px;
}

.billing-list strong {
  font-size: 22px;
}

.billing-list span {
  display: block;
  margin-top: 6px;
  color: #aaa;
  font-size: 17px;
}

/* pedidos */
.orders-page .filters-card,
.orders-page .pagination {
  display: none !important;
}

.orders-card-list {
  display: grid;
  gap: 0;
  margin-top: 28px;
}

.order-summary-card {
  width: 100%;
  padding: 0;
  border: 0;
  border-radius: 4px;
  background: #181818;
  color: #fff;
  text-align: left;
  overflow: hidden;
}

.order-main-row {
  min-height: 112px;
  display: grid;
  grid-template-columns: 70px 1fr 24px;
  gap: 12px;
  align-items: center;
  padding: 18px;
}

.order-mini-icon {
  color: #ddd;
  font-size: 24px;
}

.order-summary-text strong {
  display: block;
  font-size: 22px;
}

.order-summary-text span {
  display: block;
  margin-top: 5px;
  color: #aaa;
  font-size: 17px;
}

.order-status-row {
  border-top: 1px solid rgba(255,255,255,.16);
  padding: 17px 18px;
  color: #e5e5e5;
  font-size: 19px;
}

/* detalhe pedido */
.detail-card {
  background: #181818;
  border-radius: 4px;
  padding: 20px;
  margin-bottom: 18px;
}

.detail-row {
  display: flex;
  justify-content: space-between;
  gap: 14px;
  font-size: 18px;
  margin-bottom: 16px;
}

.detail-row strong {
  color: #aaa;
}

.detail-row span {
  color: #fff;
  text-align: right;
  max-width: 55%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.detail-card hr {
  border: 0;
  border-top: 1px solid rgba(255,255,255,.18);
  margin: 16px 0;
}

.detail-card h3 {
  margin: 0 0 8px;
  font-size: 22px;
}

.detail-card p {
  margin: 0;
  color: #bbb;
  font-size: 18px;
  line-height: 1.35;
}

.order-product-card,
.help-card {
  min-height: 100px;
  border-radius: 4px;
  background: #181818;
  display: grid;
  grid-template-columns: 64px 1fr 22px;
  gap: 14px;
  align-items: center;
  padding: 18px;
  margin-top: 18px;
}

.order-product-card strong,
.help-card strong {
  font-size: 21px;
}

.order-product-card span {
  color: #aaa;
  margin-top: 6px;
  display: block;
}

.screen-title-row {
  margin-bottom: 32px;
}

.screen-title-row > div h2,
.screen-title-row h2 {
  font-size: 30px;
}

.screen-title-row > div p {
  margin: 4px 0 0;
  color: #888;
  text-align: center;
}

@media (max-width: 380px) {
  .hero-copy h2 { font-size: 27px; }
  .hero-copy p { font-size: 18px; }
  .home-hero-screen .d-flex,
  .home-hero-screen .dashboard-actions { width: calc(100% - 34px); }
}


/* ===== Correções da repaginação Starlink ===== */

/* bottom-nav antiga removida do projeto visual */
.bottom-nav {
  display: none !important;
  pointer-events: none !important;
}

/* Início sem rolagem */
body.home-active {
  overflow: hidden !important;
  height: 100vh;
}

body.home-active .app,
body.home-active .content,
body.home-active #dashboard {
  height: 100vh;
  overflow: hidden !important;
}

body.home-active .topbar {
  display: none !important;
}

/* scanner não mostra menu inferior antigo */
body.scanner-focus .bottom-nav,
body.scanner-page-active .bottom-nav {
  display: none !important;
}

/* Botões do início: sem pré-visualizar */
.home-hero-screen .d-flex::before,
.home-hero-screen .dashboard-actions::before {
  display: none !important;
  content: none !important;
}

.home-hero-screen .d-flex,
.home-hero-screen .dashboard-actions {
  grid-template-columns: 1fr !important;
  bottom: 34px !important;
  gap: 12px !important;
}

.home-hero-screen .btn:first-child {
  background: rgba(35,35,35,.92) !important;
  color: #fff !important;
}

.home-hero-screen .btn.info,
.home-hero-screen .btn:nth-child(2) {
  background: #fff !important;
  color: #000 !important;
}

/* Header da tela pedidos igual aos prints */
.orders-header {
  display: grid;
  grid-template-columns: 44px 1fr 44px;
  align-items: center;
  margin: 54px 0 28px;
}

.orders-header h2 {
  margin: 0;
  color: #fff;
  text-align: center;
  font-size: 32px;
  letter-spacing: -.04em;
}

.orders-page {
  padding-top: 0;
}

.orders-page .table-card.legacy-table {
  display: none !important;
}

/* Evita topbar antiga nas telas internas/overlays */
body.overlay-active .topbar {
  display: none !important;
}

.account-page.active ~ .bottom-nav {
  display: none !important;
}

/* Tela de menu deve poder rolar se precisar */
.overlay-screen {
  -webkit-overflow-scrolling: touch;
}


/* Mantém todo o app no formato mobile no desktop */
body {
  display: flex;
  justify-content: center;
  background: #000 !important;
}

.app,
.overlay-screen,
.scan-modal,
.cep-modal {
  max-width: 480px;
  left: 50% !important;
  right: auto !important;
  transform: translateX(-50%);
  width: 100%;
}

.overlay-screen {
  inset: 0 auto 0 auto !important;
  max-width: 480px;
  border-left: 1px solid rgba(255,255,255,.08);
  border-right: 1px solid rgba(255,255,255,.08);
}

/* Topbar com botão voltar ao lado do título */
.topbar-title-row {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 0px 11px 20px;
}

.topbar-title-row h1 {
  margin: 0;
}

.topbar-back-btn {
  width: 38px;
  height: 38px;
  border: 0;
  background: transparent;
  color: #fff;
  font-size: 22px;
  margin-left: -5px;
  flex: 0 0 auto;
}

.topbar-back-btn.hidden {
  display: none !important;
}

/* Topbar antiga não aparece no início, mas aparece em páginas internas */
body.home-active .topbar {
  display: none !important;
}

body:not(.home-active):not(.overlay-active) .topbar {
  display: block !important;
}

/* Menu desktop dentro do mesmo padrão mobile */
.menu-screen {
  padding-left: 28px !important;
  padding-right: 28px !important;
}

/* Perfil aberto pelo menu volta corretamente */
.account-page.active #profileEditor {
  display: block !important;
}

.account-page.active .account-hero,
.account-page.active .account-menu,
.account-page.active .account-section-title,
.account-page.active .subscription-card {
  display: none !important;
}

/* Scanner: desfoca tudo, menos câmera, select e botão fechar */
body.scanner-focus .topbar,
body.scanner-focus .content > .page,
body.scanner-focus .bottom-nav {
  filter: blur(10px);
  pointer-events: none;
}

body.scanner-focus .scanner-overlay-app,
body.scanner-focus .camera-controls,
body.scanner-focus .scanner-card {
  filter: none !important;
  pointer-events: auto !important;
}

body.scanner-focus .scanner-overlay-app {
  position: fixed;
  inset: 0 auto 0 auto;
  left: 50%;
  transform: translateX(-50%);
  max-width: 480px;
  width: 100%;
  z-index: 1600;
  display: block !important;
  background: transparent;
}

body.scanner-focus .camera-controls {
  position: fixed !important;
  left: 50% !important;
  top: calc(50% - 236px) !important;
  transform: translateX(-50%) !important;
  width: calc(100% - 36px) !important;
  max-width: 444px !important;
  z-index: 1701 !important;
  display: grid !important;
  grid-template-columns: 1fr 48px !important;
}

body.scanner-focus .scanner-card {
  position: fixed !important;
  top: 50% !important;
  left: 50% !important;
  width: calc(100% - 36px) !important;
  max-width: 444px !important;
  transform: translate(-50%, -50%) !important;
  z-index: 1700 !important;
}

/* No modo scanner, nunca mostrar qualquer menu antigo */
body.scanner-focus .bottom-nav {
  display: none !important;
}

/* Pedidos: topbar padrão já tem voltar; remove header duplicado se existir */
.orders-header {
  display: none !important;
}

/* Faturamento mantém botão próprio, sem topbar */
.billing-screen .screen-title-row {
  margin-top: 0;
}

/* Corrige largura do menu em desktop para não vazar */
@media (min-width: 481px) {
  html,
  body {
    overflow-x: hidden;
  }

  .overlay-screen {
    height: 100vh;
  }
}


/* ===== Correção definitiva desktop/mobile/menu/scanner ===== */

/* Desktop: mantém o app sempre centralizado no formato mobile */
html,
body {
  width: 100%;
  min-height: 100%;
  margin: 0;
  background: #000 !important;
  overflow-x: hidden !important;
}

body {
  display: block !important;
}

.app {
  width: 100%;
  max-width: 480px !important;
  min-height: 100vh;
  margin-left: auto !important;
  margin-right: auto !important;
  left: auto !important;
  right: auto !important;
  transform: none !important;
  position: relative;
  overflow-x: hidden;
}

/* Todos os overlays também ficam centralizados no mesmo "celular" */
.overlay-screen,
.scanner-overlay-app,
.cep-modal,
.scan-modal {
  width: 100% !important;
  max-width: 480px !important;
  left: 50% !important;
  right: auto !important;
  transform: translateX(-50%) !important;
  margin: 0 !important;
  box-sizing: border-box;
}

.overlay-screen {
  position: fixed !important;
  inset: 0 auto 0 auto !important;
  height: 100dvh !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  padding: 54px 28px 32px !important;
  background: #000 !important;
  border-left: 1px solid rgba(255,255,255,.08);
  border-right: 1px solid rgba(255,255,255,.08);
}

/* Menu mobile/desktop sem vazar para a esquerda */
.menu-screen,
.menu-screen * {
  max-width: 100%;
  box-sizing: border-box;
}

.menu-list button {
  grid-template-columns: 48px minmax(0, 1fr) 22px !important;
  width: 100%;
}

.menu-list strong,
.menu-user h2,
.menu-user p {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.menu-actions {
  width: 100%;
}

.subscription-card,
.menu-subscription {
  width: 100%;
  min-width: 0;
  overflow: hidden;
}

.menu-footer {
  width: 100%;
}

/* Home: centralizado no desktop e sem rolagem */
body.home-active {
  overflow: hidden !important;
  height: 100dvh !important;
}

body.home-active .app,
body.home-active .content,
body.home-active #dashboard {
  height: 100dvh !important;
  overflow: hidden !important;
}

body.home-active .topbar {
  display: none !important;
}

.home-topbar {
  width: 100%;
}

.home-hero-screen .dashboard-actions,
.home-hero-screen .d-flex {
  position: fixed !important;
  left: 50% !important;
  bottom: 34px !important;
  width: calc(100% - 48px) !important;
  max-width: 432px !important;
  transform: translateX(-50%) !important;
  grid-template-columns: 1fr !important;
  z-index: 1000;
}

/* Remove o texto extra de pré-visualização */
.home-hero-screen .dashboard-actions::before,
.home-hero-screen .d-flex::before {
  display: none !important;
  content: none !important;
}

/* Botões do início */
.home-hero-screen .btn:first-child {
  background: rgba(35,35,35,.92) !important;
  color: #fff !important;
}

.home-hero-screen .btn.info,
.home-hero-screen .btn:nth-child(2) {
  background: #fff !important;
  color: #000 !important;
}

/* Remove menu inferior antigo de vez */
.bottom-nav {
  display: none !important;
  pointer-events: none !important;
}

body.scanner-focus .topbar,
body.scanner-focus .content > .page:not(.scanner-overlay-app) {
  filter: blur(10px);
  pointer-events: none;
}

body.scanner-focus .scanner-overlay-app {
  position: fixed !important;
  inset: 0 auto 0 auto !important;
  left: 50% !important;
  width: 100% !important;
  max-width: 480px !important;
  transform: translateX(-50%) !important;
  background: transparent !important;
  z-index: 1600 !important;
  display: block !important;
  filter: none !important;
  pointer-events: auto !important;
  overflow: hidden !important;
}

body.scanner-focus .camera-controls {
  position: fixed !important;
  top: calc(50% - 242px) !important;
  left: 50% !important;
  width: calc(100% - 36px) !important;
  max-width: 444px !important;
  transform: translateX(-50%) !important;
  z-index: 1702 !important;
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) 48px !important;
  gap: 10px !important;
  filter: none !important;
  pointer-events: auto !important;
}

body.scanner-focus .scanner-card {
  position: fixed !important;
  top: 50% !important;
  left: 50% !important;
  width: calc(100% - 36px) !important;
  max-width: 444px !important;
  height: 344px !important;
  transform: translate(-50%, -50%) !important;
  z-index: 1701 !important;
  filter: none !important;
  pointer-events: auto !important;
}

/* força vídeo/canvas a ocupar apenas a área correta */
#reader,
#reader video,
#reader canvas {
  width: 100% !important;
  height: 320px !important;
  object-fit: cover !important;
  max-width: 100% !important;
}

/* Topbar com voltar */
.topbar-title-row {
  display: flex;
  align-items: center;
  gap: 12px;
}

.topbar-title-row h1 {
  margin: 0;
}

.topbar-back-btn {
  width: 38px;
  height: 38px;
  border: 0;
  background: transparent;
  color: #fff;
  font-size: 22px;
  flex: 0 0 auto;
}

.topbar-back-btn.hidden {
  display: none !important;
}

body.overlay-active .topbar {
  display: none !important;
}

body:not(.home-active):not(.overlay-active) .topbar {
  display: block !important;
}

/* Pedidos usa botão voltar do topo, não header duplicado */
.orders-header {
  display: none !important;
}

/* Perfil volta corretamente e não vaza */
.account-page.active #profileEditor {
  display: block !important;
}

.account-page.active .account-hero,
.account-page.active .account-menu,
.account-page.active .account-section-title,
.account-page.active .subscription-card {
  display: none !important;
}

/* Desktop: o documento não precisa mostrar barra lateral enorme */
@media (min-width: 481px) {
  body {
    background: #000 !important;
  }

  .app {
    border-left: 1px solid rgba(255,255,255,.08);
    border-right: 1px solid rgba(255,255,255,.08);
  }
}


/* HOTFIX MENU E FATURAMENTO CENTRALIZADOS */
.overlay-screen,
.menu-screen,
.billing-screen,
.profile-screen,
.orders-screen{
    left:50% !important;
    transform:translateX(-50%) !important;
    right:auto !important;
    width:100% !important;
    max-width:480px !important;
}

/* remove qualquer deslocamento lateral */
.overlay-screen *{
    max-width:100%;
}

/* HOTFIX SCANNER - remove faixa preta */
body.scanner-focus::before{
    display:none !important;
}

body.scanner-focus .topbar,
body.scanner-focus .content > .page{
    filter:none !important;
}

.scanner-overlay-app{
    backdrop-filter:none !important;
    background:rgba(0,0,0,.82) !important;
}

.scanner-card,
.camera-controls{
    z-index:99999 !important;
}

#reader,
#reader video,
#reader canvas{
    background:#000 !important;
    transform:none !important;
}

/* desktop */
@media (min-width:481px){

    .app{
        margin:0 auto !important;
        left:auto !important;
        transform:none !important;
    }

    .overlay-screen{
        margin-left:auto !important;
        margin-right:auto !important;
    }
}

/* HOTFIX: desfoca o fundo ao abrir o scanner, sem cobrir a câmera */
body.scanner-focus::before {
  content: "";
  position: fixed;
  inset: 0;
  background:
    radial-gradient(circle at center, rgba(0, 208, 132, 0.12), transparent 38%),
    rgba(2, 6, 23, 0.78);
  backdrop-filter: blur(10px);
  z-index: 1500;
  display: block !important;
  content: "";
  position: fixed;
  inset: 0;
  max-width: 480px;
  left: 50%;
  transform: translateX(-50%);
  background: rgba(0,0,0,.72);
  backdrop-filter: blur(10px);
  z-index: 1500;
  content: "";
  position: fixed;
  inset: 0 auto 0 auto;
  left: 50%;
  width: 100%;
  max-width: 480px;
  transform: translateX(-50%);
  background: rgba(0,0,0,.68);
  backdrop-filter: blur(10px);
  z-index: 1500;
  display: block !important;
  content: "";
  display: block !important;
  position: fixed;
  inset: 0;
  width: 100%;
  max-width: none;
  left: 0;
  transform: none;
  background: rgba(0, 0, 0, 0.56);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  z-index: 1500;
  pointer-events: none;
}

/* Mantém somente controles e câmera acima do blur */
body.scanner-focus .scanner-overlay-app {
  background: transparent !important;
  z-index: 1600 !important;
}

body.scanner-focus .camera-controls,
body.scanner-focus .scanner-card {
  position: fixed !important;
  z-index: 1700 !important;
  filter: none !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

/* Garante que o vídeo não receba overlay/blur */
body.scanner-focus #reader,
body.scanner-focus #reader video,
body.scanner-focus #reader canvas {
  filter: none !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}



/* SCANNER MODAL - tema premium atual */
body.scanner-focus .scanner-overlay-app {
  background: transparent !important;
  padding: 0 !important;
}

body.scanner-focus .camera-controls {
  top: calc(50% - 252px) !important;
  width: calc(100% - 42px) !important;
  max-width: 438px !important;
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) 54px !important;
  gap: 12px !important;
  align-items: center;
}

body.scanner-focus .camera-controls select {
  height: 56px !important;
  padding: 0 18px !important;
  border-radius: 999px !important;
  border: 1px solid rgba(255,255,255,.18) !important;
  background: rgba(18,18,18,.88) !important;
  color: #fff !important;
  font-size: 15px !important;
  font-weight: 800 !important;
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
  box-shadow: 0 18px 60px rgba(0,0,0,.35);
}

body.scanner-focus .camera-controls select option {
  background: #111;
  color: #fff;
}

body.scanner-focus .close-camera-btn,
body.scanner-focus .camera-controls button {
  width: 56px !important;
  height: 56px !important;
  border-radius: 999px !important;
  border: 1px solid rgba(255,255,255,.18) !important;
  background: rgba(18,18,18,.92) !important;
  color: #fff !important;
  font-size: 22px !important;
  display: grid !important;
  place-items: center !important;
  box-shadow: 0 18px 60px rgba(0,0,0,.35);
  backdrop-filter: blur(18px);
  -webkit-backdrop-filter: blur(18px);
}

body.scanner-focus .scanner-card {
  width: calc(100% - 42px) !important;
  max-width: 438px !important;
  height: 354px !important;
  padding: 0 !important;
  border-radius: 8px !important;
  background: #111 !important;
  border: 1px solid rgba(255,255,255,.22) !important;
  box-shadow: 0 28px 90px rgba(0,0,0,.68) !important;
  overflow: hidden !important;
}

body.scanner-focus #reader {
  height: 354px !important;
  border-radius: 8px !important;
  overflow: hidden !important;
  background: #000 !important;
  border: 0 !important;
}

body.scanner-focus #reader video,
body.scanner-focus #reader canvas {
  height: 354px !important;
  border-radius: 8px !important;
  object-fit: cover !important;
}

/* moldura minimalista do scanner */
body.scanner-focus .scanner-card::before {
  content: "";
  position: absolute;
  inset: 18px;
  border: 1px solid rgba(255,255,255,.22);
  border-radius: 6px;
  pointer-events: none;
  z-index: 4;
}

body.scanner-focus .scanner-card::after {
  content: "Alinhe o código dentro da área";
  position: absolute;
  left: 50%;
  bottom: 18px;
  transform: translateX(-50%);
  width: max-content;
  max-width: calc(100% - 42px);
  padding: 9px 13px;
  border-radius: 999px;
  background: rgba(0,0,0,.54);
  color: rgba(255,255,255,.86);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .01em;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  pointer-events: none;
  z-index: 5;
}

/* cantos brancos estilo app premium */
body.scanner-focus #reader::before {
  content: "";
  position: absolute;
  inset: 54px 28px;
  z-index: 6;
  pointer-events: none;
  background:
    linear-gradient(#fff,#fff) left top / 46px 5px no-repeat,
    linear-gradient(#fff,#fff) left top / 5px 46px no-repeat,
    linear-gradient(#fff,#fff) right top / 46px 5px no-repeat,
    linear-gradient(#fff,#fff) right top / 5px 46px no-repeat,
    linear-gradient(#fff,#fff) left bottom / 46px 5px no-repeat,
    linear-gradient(#fff,#fff) left bottom / 5px 46px no-repeat,
    linear-gradient(#fff,#fff) right bottom / 46px 5px no-repeat,
    linear-gradient(#fff,#fff) right bottom / 5px 46px no-repeat;
  opacity: .95;
}

body.scanner-focus #reader::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  width: calc(100% - 96px);
  height: 1px;
  transform: translate(-50%, -50%);
  background: rgba(255,255,255,.75);
  z-index: 6;
  pointer-events: none;
}

/* placeholder com o novo tema */
body.scanner-focus .camera-placeholder {
  height: 354px !important;
  background: #111 !important;
  color: #fff !important;
  border: 0 !important;
  border-radius: 8px !important;
}

body.scanner-focus .permission-btn {
  border-radius: 999px !important;
  background: #fff !important;
  color: #000 !important;
  border: 0 !important;
  min-height: 48px !important;
  padding: 0 18px !important;
  font-weight: 900 !important;
}

/* modal de sucesso/duplicado no mesmo tema */
.scan-modal-card {
  border-radius: 8px !important;
  background: #181818 !important;
  border: 1px solid rgba(255,255,255,.22) !important;
  box-shadow: 0 28px 90px rgba(0,0,0,.65) !important;
}

.scan-success-icon {
  background: rgba(255,255,255,.08) !important;
  border: 1px solid rgba(255,255,255,.18) !important;
  color: #fff !important;
}

.scan-success-icon i {
  color: #fff !important;
}



/* HOTFIX: remove qualquer faixa/desfoque lateral durante zoom */
body.zoom-dragging #reader::before {
  content: none !important;
  display: none !important;
}

body.zoom-dragging #reader,
body.zoom-dragging #reader video,
body.zoom-dragging #reader canvas,
body.zoom-dragging .scanner-card {
  filter: none !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

/* Mantém somente os elementos visuais do scanner, sem overlay extra */
body.scanner-focus #reader::before {
  background:
    linear-gradient(#fff,#fff) left top / 46px 5px no-repeat,
    linear-gradient(#fff,#fff) left top / 5px 46px no-repeat,
    linear-gradient(#fff,#fff) right top / 46px 5px no-repeat,
    linear-gradient(#fff,#fff) right top / 5px 46px no-repeat,
    linear-gradient(#fff,#fff) left bottom / 46px 5px no-repeat,
    linear-gradient(#fff,#fff) left bottom / 5px 46px no-repeat,
    linear-gradient(#fff,#fff) right bottom / 46px 5px no-repeat,
    linear-gradient(#fff,#fff) right bottom / 5px 46px no-repeat !important;
}

/* Desativa qualquer mensagem/blur gerado no movimento de zoom */
body.zoom-dragging #reader::after {
  display: block !important;
}

body.zoom-dragging .scanner-card::after {
  opacity: 1 !important;
}



/* HOTFIX: impede variação/largura dos botões do início ao renderizar */
.home-hero-screen .dashboard-actions,
.home-hero-screen .d-flex {
  width: 432px !important;
  max-width: calc(100vw - 48px) !important;
  min-width: 0 !important;
  left: 50% !important;
  right: auto !important;
  transform: translate3d(-50%, 0, 0) !important;
  transition: none !important;
  animation: none !important;
  will-change: auto !important;
  box-sizing: border-box !important;
}

.home-hero-screen .dashboard-actions .btn,
.home-hero-screen .d-flex .btn {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  box-sizing: border-box !important;
  transform: none !important;
  transition: background-color .15s ease, color .15s ease, opacity .15s ease !important;
  border-radius: 4px !important;
}

.home-hero-screen .dashboard-actions .btn *,
.home-hero-screen .d-flex .btn * {
  flex-shrink: 0;
}

/* Evita expansão visual causada por recalculo de viewport mobile */
@supports (width: 100dvw) {
  .home-hero-screen .dashboard-actions,
  .home-hero-screen .d-flex {
    max-width: calc(100dvw - 48px) !important;
  }
}

/* Ícones levemente menores no tema inteiro */
i[class^="fa-"],
i[class*=" fa-"],
.fa-solid,
.fa-regular,
.fa-brands {
  font-size: .88em;
  line-height: 1;
}

/* Compensa botões redondos para manter centralização dos ícones menores */
.home-icon-btn i,
.pill-action i,
.round-next i,
.back-btn i,
.topbar-back-btn i,
.cep-close-btn i,
.close-camera-btn i,
.camera-controls button i,
.round-icon-btn i {
  font-size: .86em !important;
}

/* Ícones de listas/menu um pouco menores e mais limpos */
.menu-list button > i:first-child,
.account-menu button > i:first-child,
.billing-list button > i:first-child,
.order-mini-icon i,
.subscription-card i {
  font-size: 21px !important;
}



/* HOTFIX: remove os cantos em "L" do modal do scanner
   Mantém apenas a moldura própria da câmera/biblioteca */
body.scanner-focus #reader::before {
  content: none !important;
  display: none !important;
  background: none !important;
}

body.scanner-focus #reader::after {
  display: block !important;
}

/* Remove qualquer canto extra aplicado pelo card */
body.scanner-focus .scanner-card::before {
  content: "";
  border: 1px solid rgba(255,255,255,.18) !important;
  inset: 18px !important;
  border-radius: 6px !important;
  background: none !important;
}

/* Caso a biblioteca desenhe os cantos, ela permanece; o app não duplica */
body.scanner-focus .scanner-card .scan-corners,
body.scanner-focus .scanner-frame-corners {
  display: none !important;
}



/* ===== Login/Cadastro repaginado no tema atual ===== */
.auth-starlink {
  width: 100%;
  min-height: 100dvh;
  margin: 0;
  background: #000 !important;
  color: #fff;
  overflow: hidden;
}

.auth-starlink::before,
.auth-starlink::after {
  display: none !important;
}

.auth-starlink .auth-shell {
  position: relative;
  width: 100%;
  max-width: 480px;
  min-height: 100dvh;
  margin: 0 auto;
  padding: 38px 24px 26px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  background: #000;
  overflow: hidden;
}

.auth-top-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.auth-starlink .home-icon-btn {
  width: 54px;
  height: 54px;
  border: 0;
  background: transparent;
  color: #fff;
  font-size: 22px;
}

.auth-hero-copy {
  flex: 1;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 40px 8px 28px;
  text-align: center;
}

.auth-hero-copy h1 {
  margin: 0;
  color: #fff;
  font-size: 31px;
  line-height: 1.08;
  letter-spacing: -.05em;
}

.auth-hero-copy p {
  margin: 22px auto 0;
  max-width: 350px;
  color: rgba(255,255,255,.82);
  font-size: 18px;
  line-height: 1.42;
}

.auth-panel {
  width: 100%;
}

.auth-starlink .auth-tabs {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  padding: 0;
  border: 0;
  background: transparent;
  margin-bottom: 12px;
}

.auth-starlink .auth-tabs button {
  min-height: 54px;
  border: 1px solid rgba(255,255,255,.16);
  border-radius: 4px;
  background: #202020;
  color: #fff;
  font-size: 15px;
  font-weight: 900;
}

.auth-starlink .auth-tabs button.active {
  background: #fff;
  color: #000;
}

.auth-starlink .auth-form {
  display: none;
  padding: 18px;
  border-radius: 4px;
  background: #181818;
  border: 1px solid rgba(255,255,255,.18);
}

.auth-starlink .auth-form.active {
  display: block;
}

.auth-starlink .auth-form label {
  display: block;
  margin: 0 0 8px;
  color: #fff;
  font-size: 15px;
  font-weight: 900;
  letter-spacing: -.01em;
  text-transform: none;
}

.auth-starlink .auth-form label:not(:first-child) {
  margin-top: 16px;
}

.auth-starlink .auth-form input {
  width: 100%;
  min-height: 52px;
  padding: 0 14px;
  border-radius: 4px;
  border: 1px solid rgba(255,255,255,.18);
  background: #101010;
  color: #fff;
  outline: none;
  font-size: 16px;
  font-weight: 800;
}

.auth-starlink .auth-form input::placeholder {
  color: #777;
}

.auth-starlink .auth-form input:focus {
  border-color: rgba(255,255,255,.48);
}

.auth-starlink .auth-submit {
  width: 100%;
  min-height: 58px;
  margin-top: 18px;
  border-radius: 4px;
  background: #fff;
  color: #000;
  border: 0;
  box-shadow: none;
  font-size: 16px;
  font-weight: 900;
}

.auth-message {
  min-height: 22px;
  margin: 12px 0 0;
  color: #fb7185;
  font-size: 13px;
  font-weight: 800;
  text-align: center;
}

.auth-footer {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-top: 18px;
  color: #fff;
}

.auth-footer strong {
  letter-spacing: .22em;
  font-size: 18px;
}

.auth-footer span {
  color: #888;
  font-size: 14px;
}

@media (min-width: 481px) {
  .auth-starlink .auth-shell {
    border-left: 1px solid rgba(255,255,255,.08);
    border-right: 1px solid rgba(255,255,255,.08);
  }
}

@media (max-width: 380px) {
  .auth-hero-copy h1 {
    font-size: 27px;
  }

  .auth-hero-copy p {
    font-size: 16px;
  }
}

html,
body {
  scrollbar-width: none; /* Firefox */
  -ms-overflow-style: none; /* IE e Edge antigos */
}

html::-webkit-scrollbar,
body::-webkit-scrollbar {
  display: none; /* Chrome, Safari e Edge */
}

/* HERO MOTOboy */
.home-hero-screen,
.home-screen,
.dashboard-home,
#homeTab,
.tab-home{
    position:relative;
    overflow:hidden;
}

.home-hero-screen::before,
.home-screen::before,
.dashboard-home::before,
#homeTab::before,
.tab-home::before{
    content:"";
    position:absolute;
    inset:0;
    background:url("ffc506ea-5baf-48ef-a191-033a277d8c8c.png") center center/cover no-repeat;
    opacity:.9;
    z-index:0;
}

.home-hero-screen::after,
.home-screen::after,
.dashboard-home::after,
#homeTab::after,
.tab-home::after{
    content:"";
    position:absolute;
    inset:0;
    background:linear-gradient(to bottom,rgba(0,0,0,.2),rgba(0,0,0,.75));
    z-index:1;
}

.home-hero-screen>*,
.home-screen>*,
.dashboard-home>*,
#homeTab>*,
.tab-home>*{
    position:relative;
    z-index:2;
}


/* ===== Minha rota XLSX ===== */
.rota-page .route-panel {
  display: grid;
  gap: 14px;
}

.route-intro span {
  color: var(--muted);
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .1em;
  text-transform: uppercase;
}

.route-intro p {
  color: var(--muted);
  font-size: 13px;
  line-height: 1.45;
}

.route-card,
.route-summary,
.route-history-panel {
  padding: 16px;
  border-radius: 18px;
  border: 1px solid var(--line);
  background: var(--surface);
  margin-bottom: 10px;
}

.route-history-title {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: center;
}

.route-history-title small {
  display:block;
  color: var(--muted);
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: .08em;
  font-weight: 900;
}

.route-history-title strong {
  color: var(--text);
}

.route-history-title button {
  width: 45px;
  height: 45px;
  border-radius: 50px;
  border: 1px solid var(--line);
  background: var(--surface-2);
  color: var(--danger);
}

.route-summary.hidden,
.route-before-modal.hidden,
.route-map-modal.hidden,
.scanner-route-position.hidden {
  display: none !important;
}

.route-summary strong,
.route-summary span {
  display: block;
}

.route-summary span {
  color: var(--muted);
  margin-top: 5px;
  font-size: 13px;
}

.route-stop-card.compact-xlsx {
  display: grid;
  grid-template-columns: 44px minmax(0,1fr);
  gap: 12px;
  padding: 13px;
  border-radius: 14px;
  border: 1px solid var(--line);
  background: var(--surface);
  margin-bottom: 10px;
}

.route-stop-number {
  width: 44px;
  height: 44px;
  border-radius: 999px;
  background: #fff;
  color: #000;
  display: grid;
  place-items: center;
  font-weight: 950;
  font-size: 18px;
}

.route-stop-card strong,
.route-stop-card span,
.route-stop-card em {
  display: block;
}

.route-stop-card span {
  color: var(--muted);
  font-size: 12px;
  line-height: 1.35;
  margin-top: 4px;
}

.route-stop-card em {
  color: var(--muted-2);
  font-style: normal;
  font-size: 11px;
  margin-top: 7px;
}

.route-before-modal,
.route-map-modal {
  position: fixed;
  inset: 0;
  z-index: 999999;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 18px;
  background: rgba(0,0,0,.76);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
}

.route-before-card,
.route-map-modal-card {
  width: min(100%, 720px);
  max-height: 88vh;
  overflow: auto;
  border-radius: 24px;
  padding: 16px;
  background: var(--surface);
  border: 1px solid var(--line-strong);
  color: var(--text);
  box-shadow: var(--card-shadow);
}

.route-before-header,
.route-map-header {
  display: flex;
  justify-content: space-between;
  gap: 14px;
  align-items: flex-start;
  margin-bottom: 12px;
}

.route-before-header small,
.route-map-header small {
  color: var(--muted);
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: .1em;
  font-weight: 900;
}

.route-before-header h2,
.route-map-header h2 {
  margin: 3px 0 0;
  font-size: 24px;
}

.route-before-header button,
.route-map-close {
  width: 48px;
  height: 48px;
  border-radius: 14px;
  background: var(--surface-2);
  border: 1px solid var(--line);
  color: var(--text);
}

.route-before-card label {
  display: block;
  margin: 12px 0 6px;
  font-size: 11px;
  font-weight: 900;
  color: var(--muted);
  text-transform: uppercase;
}

.route-before-card input {
  width: 100%;
  min-height: 50px;
  border-radius: 14px;
  border: 1px solid var(--line);
  background: var(--surface-2);
  color: var(--text);
  padding: 12px;
  font: inherit;
}

.route-before-actions {
  display: grid;
  gap: 8px;
  margin-top: 14px;
}

.route-map-floating {
  position: fixed;
  right: 18px;
  bottom: 95px;
  z-index: 9999;
  width: 56px;
  height: 56px;
  border-radius: 18px;
  border: 1px solid var(--line);
  background: #fff;
  color: #000;
  box-shadow: var(--card-shadow);
}

.route-map-canvas {
  width: 100%;
  height: 72vh;
  min-height: 430px;
  border-radius: 18px;
  overflow: hidden;
  background: #111;
}

.route-map-marker span {
  width: 30px;
  height: 30px;
  border-radius: 999px;
  display: grid;
  place-items: center;
  background: #fff;
  color: #000;
  border: 2px solid #fff;
  font-weight: 950;
  box-shadow: 0 8px 20px rgba(0,0,0,.35);
}

.route-map-marker.origin span {
  background: var(--primary);
}

.scanner-route-position {
  position: fixed;
  left: 50%;
  bottom: calc(130px + env(safe-area-inset-bottom));
  transform: translateX(-50%);
  z-index: 999999;
  width: min(88vw, 360px);
  border-radius: 22px;
  border: 1px solid var(--line-strong);
  background: rgba(6, 17, 31, .94);
  color: var(--text);
  text-align: center;
  padding: 18px;
  box-shadow: var(--card-shadow);
}

.scanner-route-kicker {
  color: var(--muted);
  font-size: 10px;
  font-weight: 950;
  letter-spacing: .12em;
}

.scanner-route-number {
  font-size: 64px;
  font-weight: 950;
  line-height: 1;
  margin: 6px 0;
}

.scanner-route-position strong,
.scanner-route-position span,
.scanner-route-position small {
  display: block;
}

.scanner-route-position span {
  color: var(--primary);
  font-weight: 900;
  margin-top: 4px;
}

.scanner-route-position small {
  color: var(--muted);
  margin-top: 5px;
}

@media (max-width: 520px) {
  .route-map-modal {
    padding: 10px;
  }
  .route-map-modal-card {
    width: 100%;
    max-height: 94vh;
    padding: 12px;
    border-radius: 22px;
  }
  .route-map-canvas {
    height: 74vh;
    min-height: 520px;
  }
}


/* ===== HERE e mapa tela cheia ===== */
.route-select {
  width: 100%;
  min-height: 50px;
  border-radius: 14px;
  border: 1px solid var(--line);
  background: var(--surface-2);
  color: var(--text);
  padding: 12px;
  font: inherit;
}

.route-map-modal {
  padding: 0 !important;
  align-items: stretch !important;
  justify-content: stretch !important;
  background: #000 !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

.route-map-modal-card {
  width: 100% !important;
  height: 100dvh !important;
  max-height: none !important;
  border-radius: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  display: grid !important;
  grid-template-rows: auto 1fr !important;
  background: #000 !important;
}

.route-map-header {
  position: absolute !important;
  top: max(18px, env(safe-area-inset-top)) !important;
  left: 16px !important;
  right: 16px !important;
  z-index: 5000 !important;
  margin: 0 !important;
  padding: 0 !important;
  pointer-events: none !important;
}

.route-map-header > div {
  display: inline-block;
  max-width: calc(100% - 76px);
  padding: 10px 14px;
  border-radius: 16px;
  background: rgba(0,0,0,.72);
  border: 1px solid rgba(255,255,255,.18);
  pointer-events: auto;
}

.route-map-header small {
  display: block;
  color: #b8b8b8 !important;
}

.route-map-header h2 {
  font-size: 20px !important;
  line-height: 1.05 !important;
  color: #fff !important;
  margin: 3px 0 0 !important;
}

.route-map-close {
  position: absolute !important;
  right: 0 !important;
  top: 0 !important;
  width: 54px !important;
  height: 54px !important;
  border-radius: 18px !important;
  background: rgba(0,0,0,.72) !important;
  border: 1px solid rgba(255,255,255,.18) !important;
  color: #fff !important;
  pointer-events: auto !important;
}

.route-map-canvas {
  width: 100% !important;
  height: 100dvh !important;
  min-height: 100dvh !important;
  border-radius: 0 !important;
}

.route-map-legend {
  display: none !important;
}

.route-map-marker.me span {
  width: 38px !important;
  height: 38px !important;
  background: #1d9bf0 !important;
  color: #fff !important;
  font-size: 11px !important;
}

.route-map-marker.origin span {
  background: #00d084 !important;
  color: #000 !important;
}


/* ===== Roteiros e tabelas com rolagem horizontal segura ===== */
.route-table-wrap,
.route-table-scroll {
  width: 100%;
  max-width: 100%;
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  border-radius: 14px;
  border: 1px solid var(--line);
  background: var(--surface);
}

.route-table {
  width: max-content;
  min-width: 100%;
  border-collapse: collapse;
  table-layout: auto;
}

.route-table th,
.route-table td {
  padding: 11px 12px;
  border-bottom: 1px solid var(--line);
  text-align: left;
  color: var(--text);
  font-size: 12px;
  white-space: nowrap;
  vertical-align: top;
}

.route-table th {
  position: sticky;
  top: 0;
  background: var(--surface-2);
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: .06em;
  font-size: 10px;
  font-weight: 900;
  z-index: 1;
}

.route-table td:nth-child(3) {
  min-width: 320px;
  max-width: 520px;
  white-space: normal;
  line-height: 1.35;
}

.route-table tbody tr:last-child td {
  border-bottom: 0;
}

.route-xlsx-filter {
  margin: 12px 0;
}

#xlsxRouteResults,
#roteiroTableWrap {
  max-width: 100%;
  overflow: hidden;
}

.roteiros-card-list {
  display: grid;
  gap: 10px;
}

.roteiro-card {
  width: 100%;
  min-height: 68px;
  padding: 13px 14px;
  border-radius: 14px;
  border: 1px solid var(--line);
  background: var(--surface);
  color: var(--text);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  text-align: left;
}

.roteiro-card strong,
.roteiro-card span,
.roteiro-card em {
  display: block;
}

.roteiro-card span,
.roteiro-card em {
  color: var(--muted);
  font-size: 12px;
  font-style: normal;
  font-weight: 800;
}

.route-detail-head-inline {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 14px;
}

.route-detail-head-inline small {
  display: block;
  color: var(--muted);
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: .08em;
  font-weight: 900;
}

.route-detail-head-inline strong {
  display: block;
  color: var(--text);
  font-size: 18px;
}

.hidden {
  display: none !important;
}

@media (max-width: 520px) {
  .route-table th,
  .route-table td {
    padding: 10px 11px;
    font-size: 11px;
  }

  .route-table td:nth-child(3) {
    min-width: 260px;
    max-width: 320px;
  }

  .roteiro-card {
    min-height: 62px;
    border-radius: 12px;
  }
}


/* ===== Sheet de roteiro no mapa e botão arrastável ===== */
.route-map-floating {
  touch-action: none;
  cursor: grab;
}

.route-map-floating:active {
  cursor: grabbing;
}

.route-map-sheet {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 5200;
  max-height: 58dvh;
  background: rgba(12, 18, 31, .98);
  border-top: 1px solid rgba(255,255,255,.16);
  border-radius: 24px 24px 0 0;
  box-shadow: 0 -20px 60px rgba(0,0,0,.5);
  padding: 10px 14px max(14px, env(safe-area-inset-bottom));
  color: var(--text);
  overflow: hidden;
  display: grid;
  grid-template-rows: auto auto auto minmax(0, 1fr);
}

.route-map-sheet.hidden {
  display: none !important;
}

.route-map-sheet-handle {
  width: 46px;
  height: 5px;
  border-radius: 999px;
  background: rgba(255,255,255,.22);
  margin: 0 auto 10px;
}

.route-map-sheet-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 10px;
}

.route-map-sheet-header small {
  display: block;
  color: var(--muted);
  font-size: 10px;
  font-weight: 900;
  letter-spacing: .1em;
  text-transform: uppercase;
}

.route-map-sheet-header h2 {
  margin: 3px 0;
  font-size: 24px;
  line-height: 1.05;
  letter-spacing: -.04em;
}

.route-map-sheet-header span {
  color: var(--muted);
  font-size: 13px;
  font-weight: 800;
}

.route-map-sheet-header button {
  width: 44px;
  height: 44px;
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,.14);
  background: rgba(255,255,255,.08);
  color: #fff;
}

.route-map-sheet-info {
  display: grid;
  gap: 8px;
  padding-bottom: 12px;
  border-bottom: 1px solid rgba(255,255,255,.09);
}

.route-map-sheet-info div {
  display: flex;
  gap: 10px;
  align-items: center;
  color: #e8eef7;
  font-size: 13px;
  line-height: 1.25;
}

.route-map-sheet-info i {
  color: #4e8cff;
  width: 18px;
  text-align: center;
}

.route-map-sheet-stops {
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  padding-top: 10px;
  display: grid;
  gap: 0;
}

.route-map-sheet-stop {
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr);
  gap: 12px;
  position: relative;
  padding-bottom: 16px;
}

.route-map-sheet-stop:not(:last-child)::before {
  content: "";
  position: absolute;
  left: 16px;
  top: 32px;
  bottom: -2px;
  width: 2px;
  background: rgba(78,140,255,.45);
}

.route-map-sheet-order {
  display: grid;
  justify-items: center;
  gap: 4px;
  z-index: 1;
}

.route-map-sheet-order strong {
  width: 32px;
  height: 32px;
  border-radius: 999px;
  display: grid;
  place-items: center;
  background: #4e8cff;
  color: #fff;
  font-size: 14px;
  font-weight: 950;
}

.route-map-sheet-stop-body {
  min-width: 0;
}

.route-map-sheet-stop-body strong,
.route-map-sheet-stop-body span,
.route-map-sheet-stop-body em {
  display: block;
}

.route-map-sheet-stop-body strong {
  color: #fff;
  font-size: 15px;
  line-height: 1.2;
}

.route-map-sheet-stop-body span {
  color: #b9c2d0;
  font-size: 12px;
  line-height: 1.3;
  margin-top: 3px;
}

.route-map-sheet-stop-body em {
  color: #8e99aa;
  font-size: 11px;
  font-style: normal;
  margin-top: 5px;
}

.route-map-sheet-actions {
  display: grid;
  grid-template-columns: 1.2fr 1fr 1fr;
  gap: 6px;
  margin-top: 10px;
}

.route-map-sheet-actions button {
  min-height: 42px;
  border-radius: 10px;
  border: 1px solid rgba(255,255,255,.1);
  background: rgba(255,255,255,.08);
  color: #fff;
  font-size: 11px;
  font-weight: 900;
}

.route-map-sheet-actions button:first-child {
  background: #4e8cff;
  border-color: #4e8cff;
}

@media (min-width: 760px) {
  .route-map-sheet {
    left: 24px;
    right: auto;
    bottom: 24px;
    width: 480px;
    max-height: 76dvh;
    border-radius: 24px;
    border: 1px solid rgba(255,255,255,.16);
  }
}

@media (max-width: 520px) {
  .route-map-sheet {
    max-height: 62dvh;
    border-radius: 22px 22px 0 0;
  }

  .route-map-sheet-header h2 {
    font-size: 22px;
  }

  .route-map-sheet-actions {
    grid-template-columns: 1fr 1fr 1fr;
  }

  .route-map-sheet-actions button {
    font-size: 10px;
    min-height: 40px;
    padding: 6px 4px;
  }
}


/* ===== Animação natural da lista da rota no mapa ===== */
.route-map-sheet {
  transform: translateY(0);
  opacity: 1;
  will-change: transform, opacity;
}

.route-map-sheet.opening {
  animation: routeSheetUp .24s cubic-bezier(.2,.85,.25,1) both;
}

.route-map-sheet.closing {
  animation: routeSheetDown .22s cubic-bezier(.4,0,.25,1) both;
}

@keyframes routeSheetUp {
  from {
    transform: translateY(105%);
    opacity: .72;
  }
  to {
    transform: translateY(0);
    opacity: 1;
  }
}

@keyframes routeSheetDown {
  from {
    transform: translateY(0);
    opacity: 1;
  }
  to {
    transform: translateY(105%);
    opacity: .68;
  }
}

.route-map-sheet-stop.active {
  background: rgba(78,140,255,.14);
  border: 1px solid rgba(78,140,255,.35);
  border-radius: 14px;
  padding: 10px;
  margin: -10px 0 6px;
}

.route-live-card {
  background: rgba(78,140,255,.14);
  border: 1px solid rgba(78,140,255,.3);
  border-radius: 14px;
  padding: 10px;
}

.route-live-card b {
  color: #fff;
}

.gps-navigation-info{
position:fixed;top:90px;left:50%;transform:translateX(-50%);
z-index:99999;padding:12px 16px;border-radius:14px;
background:#111;color:#fff;border:1px solid #333;font-weight:700;
}
.hidden{display:none!important;}


/* ===== Modo navegação GPS visual ===== */
.gps-navigation-view {
  position: fixed;
  inset: 0;
  z-index: 1000000;
  background: #05070a;
  color: #fff;
}

.gps-navigation-view.hidden {
  display: none !important;
}

.gps-nav-map {
  position: absolute;
  inset: 0;
  z-index: 1;
}

.gps-nav-top-card {
  position: absolute;
  left: 14px;
  right: 14px;
  top: max(14px, env(safe-area-inset-top));
  z-index: 10;
  min-height: 112px;
  border-radius: 22px;
  background: linear-gradient(135deg, #063f31, #0b7457);
  box-shadow: 0 18px 50px rgba(0,0,0,.32);
  display: grid;
  grid-template-columns: 86px minmax(0, 1fr);
  gap: 12px;
  align-items: center;
  padding: 14px;
}

.gps-nav-turn-icon {
  font-size: 54px;
  display: grid;
  place-items: center;
}

.gps-nav-top-card strong {
  display: block;
  font-size: clamp(34px, 8vw, 56px);
  line-height: .95;
  letter-spacing: -.05em;
}

.gps-nav-top-card span {
  display: block;
  margin-top: 8px;
  font-size: clamp(24px, 6vw, 42px);
  line-height: 1.05;
  font-weight: 850;
  letter-spacing: -.04em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.gps-nav-side-actions {
  position: absolute;
  right: 14px;
  top: calc(max(14px, env(safe-area-inset-top)) + 134px);
  z-index: 10;
  display: grid;
  gap: 12px;
}

.gps-nav-side-actions button {
  width: 58px;
  height: 58px;
  border-radius: 999px;
  border: 1px solid rgba(0,0,0,.08);
  background: rgba(255,255,255,.94);
  color: #1d2530;
  box-shadow: 0 10px 26px rgba(0,0,0,.25);
  font-size: 20px;
}

.gps-nav-status {
  position: absolute;
  left: 50%;
  bottom: 160px;
  transform: translateX(-50%);
  z-index: 10;
  padding: 10px 14px;
  border-radius: 999px;
  background: rgba(0,0,0,.62);
  color: #fff;
  font-weight: 850;
  box-shadow: 0 12px 32px rgba(0,0,0,.28);
}

.gps-nav-bottom-card {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 10;
  min-height: 138px;
  padding: 16px 18px max(16px, env(safe-area-inset-bottom));
  border-radius: 28px 28px 0 0;
  background: rgba(255,255,255,.96);
  color: #1d2530;
  display: grid;
  grid-template-columns: 72px minmax(0, 1fr) 72px;
  align-items: center;
  gap: 12px;
  box-shadow: 0 -16px 48px rgba(0,0,0,.24);
}

.gps-nav-end,
.gps-nav-next {
  width: 66px;
  height: 66px;
  border-radius: 999px;
  border: 1px solid rgba(0,0,0,.12);
  background: #fff;
  color: #1d2530;
  font-size: 24px;
}

.gps-nav-eta {
  text-align: center;
  min-width: 0;
}

.gps-nav-eta strong {
  display: block;
  color: #f28c00;
  font-size: clamp(36px, 8vw, 50px);
  line-height: 1;
  letter-spacing: -.06em;
}

.gps-nav-eta span {
  display: block;
  color: #667085;
  font-size: 20px;
  font-weight: 850;
  margin-top: 8px;
}

.gps-nav-eta small {
  display: block;
  color: #8a94a6;
  margin-top: 4px;
  font-size: 12px;
  font-weight: 800;
}

.gps-nav-user-marker span {
  width: 54px;
  height: 54px;
  border-radius: 18px;
  background: #ffd43b;
  border: 3px solid #1d2530;
  color: #1d2530;
  display: grid;
  place-items: center;
  font-size: 24px;
  box-shadow: 0 12px 28px rgba(0,0,0,.34);
}

body.gps-mode-active .bottom-nav,
body.gps-mode-active .topbar,
body.gps-mode-active .route-map-modal,
body.gps-mode-active .gps-navigation-info {
  display: none !important;
}

@media (max-width: 520px) {
  .gps-nav-top-card {
    min-height: 106px;
    grid-template-columns: 74px minmax(0, 1fr);
    border-radius: 20px;
  }

  .gps-nav-turn-icon {
    font-size: 46px;
  }

  .gps-nav-side-actions button {
    width: 54px;
    height: 54px;
  }

  .gps-nav-bottom-card {
    min-height: 128px;
    grid-template-columns: 66px minmax(0, 1fr) 66px;
  }

  .gps-nav-end,
  .gps-nav-next {
    width: 60px;
    height: 60px;
  }
}


/* ===== Compactação geral + navegação no padrão do projeto ===== */
:root {
  --compact-radius: 10px;
}

body {
  font-size: 13px !important;
}

.page,
.content,
.app {
  gap: 12px !important;
}

.btn {
  min-height: 48px !important;
  border-radius: 4px !important;
  padding: 10px 12px !important;
  font-size: 13px !important;
}

.card,
.route-card,
.route-summary,
.route-history-panel,
.filters-card,
.roteiro-card,
.route-table-scroll,
.route-table-wrap {
  border-radius: var(--compact-radius) !important;
}

.filters-card {
  padding: 12px !important;
}

.filters-card input,
.filters-card select,
.route-select {
  min-height: 44px !important;
  border-radius: 8px !important;
  font-size: 13px !important;
}

.route-table th,
.route-table td {
  padding: 9px 10px !important;
  font-size: 11px !important;
}

.roteiro-card {
  min-height: 58px !important;
  padding: 11px 12px !important;
  border-radius: 8px !important;
}

/* GPS compacto no padrão escuro */
.gps-navigation-view {
  background: #050505 !important;
}

.gps-nav-top-card {
  left: 12px !important;
  right: 12px !important;
  top: max(12px, env(safe-area-inset-top)) !important;
  min-height: 82px !important;
  border-radius: 14px !important;
  grid-template-columns: 54px minmax(0, 1fr) !important;
  gap: 10px !important;
  padding: 11px 12px !important;
  background: rgba(17,17,17,.94) !important;
  border: 1px solid rgba(255,255,255,.14) !important;
  box-shadow: 0 18px 48px rgba(0,0,0,.42) !important;
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
}

.gps-nav-turn-icon {
  width: 48px !important;
  height: 48px !important;
  border-radius: 12px !important;
  display: grid !important;
  place-items: center !important;
  font-size: 28px !important;
  background: #fff !important;
  color: #000 !important;
}

.gps-nav-top-card strong {
  font-size: clamp(24px, 6vw, 34px) !important;
  line-height: 1 !important;
  letter-spacing: -.05em !important;
}

.gps-nav-top-card span {
  font-size: clamp(17px, 4.5vw, 25px) !important;
  margin-top: 4px !important;
  line-height: 1.1 !important;
}

.gps-nav-side-actions {
  right: 12px !important;
  top: calc(max(12px, env(safe-area-inset-top)) + 96px) !important;
  gap: 9px !important;
}

.gps-nav-side-actions button {
  width: 48px !important;
  height: 48px !important;
  border-radius: 14px !important;
  background: rgba(17,17,17,.94) !important;
  color: #fff !important;
  border: 1px solid rgba(255,255,255,.14) !important;
  font-size: 17px !important;
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
}

.gps-nav-bottom-card {
  left: 10px !important;
  right: 10px !important;
  bottom: max(10px, env(safe-area-inset-bottom)) !important;
  min-height: 86px !important;
  padding: 10px !important;
  border-radius: 18px !important;
  grid-template-columns: 52px minmax(0, 1fr) 52px !important;
  gap: 8px !important;
  background: rgba(17,17,17,.95) !important;
  color: #fff !important;
  border: 1px solid rgba(255,255,255,.14) !important;
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
}

.gps-nav-end,
.gps-nav-next {
  width: 48px !important;
  height: 48px !important;
  border-radius: 14px !important;
  background: #222 !important;
  color: #fff !important;
  border: 1px solid rgba(255,255,255,.14) !important;
  font-size: 18px !important;
}

.gps-nav-eta strong {
  color: #fff !important;
  font-size: clamp(24px, 6vw, 32px) !important;
  line-height: 1 !important;
}

.gps-nav-eta span {
  color: #b6b6b6 !important;
  font-size: 13px !important;
  margin-top: 4px !important;
}

.gps-nav-eta small {
  color: #858585 !important;
  font-size: 10px !important;
}

.gps-nav-status {
  min-width: min(86vw, 360px);
  bottom: 118px !important;
  padding: 10px 12px !important;
  border-radius: 14px !important;
  background: rgba(17,17,17,.96) !important;
  border: 1px solid rgba(255,255,255,.14);
  color: #fff;
  text-align: left;
  box-shadow: 0 18px 48px rgba(0,0,0,.35);
}

.gps-nav-status strong {
  display: block;
  font-size: 13px;
  margin-bottom: 8px;
}

.gps-progress-bar {
  display: block;
  height: 5px;
  border-radius: 999px;
  overflow: hidden;
  background: rgba(255,255,255,.12);
}

.gps-progress-bar i {
  display: block;
  height: 100%;
  width: 38%;
  border-radius: inherit;
  background: #fff;
  animation: gpsProgressMove 1s ease-in-out infinite;
}

@keyframes gpsProgressMove {
  0% { transform: translateX(-110%); }
  100% { transform: translateX(280%); }
}

.gps-nav-user-marker span {
  width: 42px !important;
  height: 42px !important;
  border-radius: 14px !important;
  background: #fff !important;
  border: 3px solid #111 !important;
  color: #111 !important;
  font-size: 19px !important;
}

@media (max-width: 520px) {
  .page {
    padding-left: 0px !important;
    padding-right: 0px !important;
  }

  .gps-nav-top-card {
    min-height: 78px !important;
  }

  .gps-nav-bottom-card {
    min-height: 82px !important;
  }
}


/* ===== Ajustes visuais solicitados GPS/sheet ===== */
.gps-nav-top-card,
.gps-nav-bottom-card,
.gps-nav-side-actions button,
.route-map-sheet {
  background: rgba(10, 16, 28, .94) !important;
  border-color: rgba(255,255,255,.14) !important;
  color: #fff !important;
}

.gps-nav-turn-icon {
  background: #ffffff !important;
  color: #0b1220 !important;
}

.gps-nav-top-card strong,
.gps-nav-top-card span {
  color: #fff !important;
}

.gps-nav-eta strong {
  color: #fff !important;
}

.gps-nav-end,
.gps-nav-next {
  background: rgba(255,255,255,.08) !important;
  color: #fff !important;
  border-color: rgba(255,255,255,.14) !important;
}

.route-map-sheet-header {
  position: relative !important;
}

#routeMapSheetTitle {
  display: block !important;
  max-width: min(62vw, 360px) !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

#routeMapSheetAddStop {
  background: rgba(255,255,255,.08) !important;
  color: #fff !important;
  border-color: rgba(255,255,255,.14) !important;
}

.route-sheet-more-menu {
  position: absolute;
  right: 0;
  top: calc(100% + 8px);
  min-width: 190px;
  padding: 8px;
  border-radius: 14px;
  background: rgba(10,16,28,.98);
  border: 1px solid rgba(255,255,255,.14);
  box-shadow: 0 18px 50px rgba(0,0,0,.42);
  display: none;
  z-index: 30;
}

.route-sheet-more-menu.show {
  display: block;
}

.route-sheet-more-menu button {
  width: 100%;
  min-height: 42px;
  border-radius: 10px;
  border: 0;
  background: rgba(255,255,255,.08);
  color: #fff;
  display: flex;
  align-items: center;
  gap: 9px;
  justify-content: flex-start;
  padding: 0 12px;
  font-weight: 900;
}

.route-map-sheet-header > button:not(#routeMapSheetAddStop) {
  display: none !important;
}

.route-map-sheet-stop-body strong {
  color: #fff !important;
}

.route-map-sheet-actions button:first-child {
  background: #4e8cff !important;
  border-color: #4e8cff !important;
}

.gps-nav-map .leaflet-interactive {
  pointer-events: auto;
}

@media (max-width: 520px) {
  #routeMapSheetTitle {
    max-width: 56vw !important;
  }
}


/* ===== Fix click route-map-sheet ===== */
#routeMapSheet {
  pointer-events: auto !important;
  z-index: 5300 !important;
}

#routeMapSheet * {
  pointer-events: auto;
}


/* ===== Auth/sheet fixes ===== */
#routeMapSheet {
  pointer-events: auto !important;
}
#routeMapSheet * {
  pointer-events: auto !important;
}


/* ===== FIX mapa sumindo ao centralizar: remove 3D real do Leaflet ===== */
.gps-perspective-3d,
.gps-safe-first-person {
  perspective: none !important;
  overflow: hidden !important;
  background: #0b1220 !important;
}

.gps-perspective-3d .leaflet-map-pane,
.gps-safe-first-person .leaflet-map-pane {
  transform-origin: initial !important;
  transition: none !important;
}

.gps-perspective-3d .leaflet-tile-pane,
.gps-perspective-3d .leaflet-overlay-pane,
.gps-perspective-3d .leaflet-marker-pane,
.gps-perspective-3d .leaflet-shadow-pane,
.gps-safe-first-person .leaflet-tile-pane,
.gps-safe-first-person .leaflet-overlay-pane,
.gps-safe-first-person .leaflet-marker-pane,
.gps-safe-first-person .leaflet-shadow-pane {
  transform-style: flat !important;
}

.gps-safe-first-person .leaflet-overlay-pane svg {
  filter: drop-shadow(0 3px 6px rgba(0,0,0,.25));
}

.gps-safe-first-person .leaflet-overlay-pane path {
  stroke-linecap: round !important;
  stroke-linejoin: round !important;
}


/* ===== Seta fixa e rota visível no GPS MapLibre ===== */
.gps-gl-user-forward {
  transform: translate(-50%, -50%) !important;
}

.gps-gl-user-forward i {
  transform: rotate(0deg) !important;
}

.gps-gl-user {
  width: 46px;
  height: 46px;
  border-radius: 16px;
  background: #ffffff;
  color: #0b1220;
  border: 3px solid #0b1220;
  display: grid;
  place-items: center;
  font-size: 21px;
  box-shadow: 0 12px 28px rgba(0,0,0,.38);
  will-change: transform;
}

.gps-gl-target {
  width: 34px;
  height: 34px;
  border-radius: 999px;
  background: #4e8cff;
  color: #fff;
  border: 3px solid #fff;
  display: grid;
  place-items: center;
  font-size: 13px;
  font-weight: 950;
  box-shadow: 0 10px 24px rgba(0,0,0,.35);
}


/* ===== Botão avançar/voltar parada no GPS ===== */
.gps-nav-stepper {
  display: grid !important;
  grid-template-columns: 1fr 1fr !important;
  gap: 2px !important;
  padding: 0 8px !important;
}

.gps-nav-stepper i {
  display: grid;
  place-items: center;
  height: 100%;
  min-width: 22px;
}


/* ===== Scanner: posição do pedido no roteiro ===== */
.scanner-route-position {
  position: fixed !important;
  left: 50% !important;
  bottom: calc(118px + env(safe-area-inset-bottom)) !important;
  transform: translateX(-50%) !important;
  z-index: 999999 !important;
  width: min(86vw, 340px) !important;
  border-radius: 18px !important;
  border: 1px solid rgba(255,255,255,.14) !important;
  background: rgba(10, 16, 28, .96) !important;
  color: #fff !important;
  text-align: center !important;
  padding: 12px 14px !important;
  box-shadow: 0 18px 50px rgba(0,0,0,.38) !important;
}

.scanner-route-kicker {
  color: rgba(255,255,255,.62) !important;
  font-size: 10px !important;
  font-weight: 950 !important;
  letter-spacing: .12em !important;
  text-transform: uppercase !important;
}

.scanner-route-number {
  font-size: 72px !important;
  font-weight: 950 !important;
  line-height: .95 !important;
  margin: 4px 0 6px !important;
  letter-spacing: -.06em !important;
}

.scanner-route-position strong {
  display: block !important;
  color: rgba(255,255,255,.82) !important;
  font-size: 12px !important;
  font-weight: 900 !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: nowrap !important;
}


/* ===== Scanner somente consulta roteiro ===== */
.cep-modal {
  display: none !important;
}

.scanner-route-position {
  position: fixed !important;
  left: 50% !important;
  bottom: calc(118px + env(safe-area-inset-bottom)) !important;
  transform: translateX(-50%) !important;
  z-index: 999999 !important;
  width: min(86vw, 340px) !important;
  border-radius: 18px !important;
  border: 1px solid rgba(255,255,255,.14) !important;
  background: rgba(10, 16, 28, .96) !important;
  color: #fff !important;
  text-align: center !important;
  padding: 12px 14px !important;
  box-shadow: 0 18px 50px rgba(0,0,0,.38) !important;
}

.scanner-route-kicker {
  color: rgba(255,255,255,.62) !important;
  font-size: 10px !important;
  font-weight: 950 !important;
  letter-spacing: .12em !important;
  text-transform: uppercase !important;
}

.scanner-route-number {
  font-size: 72px !important;
  font-weight: 950 !important;
  line-height: .95 !important;
  margin: 4px 0 6px !important;
  letter-spacing: -.06em !important;
}

.scanner-route-position strong {
  display: block !important;
  color: rgba(255,255,255,.82) !important;
  font-size: 12px !important;
  font-weight: 900 !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: nowrap !important;
}


/* ===== Limpeza: scanner somente roteiro ===== */
.cep-modal {
  display: none !important;
}

.scanner-route-position {
  position: fixed !important;
  left: 50% !important;
  bottom: calc(118px + env(safe-area-inset-bottom)) !important;
  transform: translateX(-50%) !important;
  z-index: 999999 !important;
  width: min(86vw, 340px) !important;
  border-radius: 18px !important;
  border: 1px solid rgba(255,255,255,.14) !important;
  background: rgba(10, 16, 28, .96) !important;
  color: #fff !important;
  text-align: center !important;
  padding: 12px 14px !important;
  box-shadow: 0 18px 50px rgba(0,0,0,.38) !important;
}

.scanner-route-kicker {
  color: rgba(255,255,255,.62) !important;
  font-size: 10px !important;
  font-weight: 950 !important;
  letter-spacing: .12em !important;
  text-transform: uppercase !important;
}

.scanner-route-kicker-error {
  color: #ff7a7a !important;
}

.scanner-route-number {
  font-size: 72px !important;
  font-weight: 950 !important;
  line-height: .95 !important;
  margin: 4px 0 6px !important;
  letter-spacing: -.06em !important;
}

.scanner-route-number-error {
  font-size: 56px !important;
  color: #ff7a7a !important;
}

.scanner-route-position strong {
  display: block !important;
  color: rgba(255,255,255,.82) !important;
  font-size: 12px !important;
  font-weight: 900 !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: nowrap !important;
}

.route-map-sheet-actions-external {
  grid-template-columns: 48px 48px 1fr 1fr !important;
}

.route-map-sheet-actions-external button {
  min-width: 0;
}

.route-map-sheet-actions-external button:nth-child(1),
.route-map-sheet-actions-external button:nth-child(2) {
  font-size: 18px;
  padding: 0;
}

@media (max-width: 520px) {
  .route-map-sheet-actions-external {
    grid-template-columns: 44px 44px 1fr 1fr !important;
  }
}


/* ===== Scanner: número abaixo da câmera, sem card ===== */
.scanner-route-position {
  position: fixed !important;
  left: 50% !important;
  bottom: calc(58px + env(safe-area-inset-bottom)) !important;
  transform: translateX(-50%) !important;
  z-index: 999999 !important;
  width: min(86vw, 360px) !important;
  border: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  color: #fff !important;
  text-align: center !important;
  padding: 0 !important;
  pointer-events: none !important;
}

.scanner-route-kicker {
  color: rgba(255,255,255,.72) !important;
  font-size: 11px !important;
  font-weight: 950 !important;
  letter-spacing: .18em !important;
  text-transform: uppercase !important;
  text-shadow: 0 2px 12px rgba(0,0,0,.85) !important;
}

.scanner-route-kicker-error {
  color: #ff7a7a !important;
}

.scanner-route-number {
  font-size: clamp(76px, 20vw, 132px) !important;
  font-weight: 950 !important;
  line-height: .85 !important;
  margin: 8px 0 10px !important;
  letter-spacing: -.08em !important;
  color: #fff !important;
  text-shadow: 0 8px 32px rgba(0,0,0,.95) !important;
}

.scanner-route-number-error {
  font-size: clamp(48px, 13vw, 76px) !important;
  color: #ff7a7a !important;
}

.scanner-route-position strong {
  display: block !important;
  color: rgba(255,255,255,.86) !important;
  font-size: 13px !important;
  font-weight: 950 !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: nowrap !important;
  text-shadow: 0 2px 14px rgba(0,0,0,.9) !important;
}


/* ===== Scanner sem card + exportação Circuit ===== */
.scanner-route-position {
  position: fixed !important;
  left: 50% !important;
  bottom: calc(58px + env(safe-area-inset-bottom)) !important;
  transform: translateX(-50%) !important;
  z-index: 999999 !important;
  width: min(86vw, 360px) !important;
  border: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  color: #fff !important;
  text-align: center !important;
  padding: 0 !important;
  pointer-events: none !important;
}

.scanner-route-kicker {
  color: rgba(255,255,255,.72) !important;
  font-size: 11px !important;
  font-weight: 950 !important;
  letter-spacing: .18em !important;
  text-transform: uppercase !important;
  text-shadow: 0 2px 12px rgba(0,0,0,.85) !important;
}

.scanner-route-kicker-error {
  color: #ff7a7a !important;
}

.scanner-route-number {
  font-size: clamp(76px, 20vw, 132px) !important;
  font-weight: 950 !important;
  line-height: .85 !important;
  margin: 8px 0 10px !important;
  letter-spacing: -.08em !important;
  color: #fff !important;
  text-shadow: 0 8px 32px rgba(0,0,0,.95) !important;
}

.scanner-route-number-error {
  font-size: clamp(48px, 13vw, 76px) !important;
  color: #ff7a7a !important;
}

.scanner-route-position strong {
  display: block !important;
  color: rgba(255,255,255,.86) !important;
  font-size: 13px !important;
  font-weight: 950 !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: nowrap !important;
  text-shadow: 0 2px 14px rgba(0,0,0,.9) !important;
}

.route-build-actions {
  display: grid !important;
  gap: 10px;
  align-items: stretch;
}

.route-export-btn {
  padding: 0 !important;
  min-width: 56px;
}

.route-export-btn.hidden {
  display: none !important;
}

.route-build-actions:has(.route-export-btn.hidden) {
  grid-template-columns: 1fr;
}


/* ===== Modal de exportação da rota ===== */
.export-route-card {
  max-width: 520px;
}

.export-route-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin-top: 16px;
}

.export-route-grid button {
  min-height: 92px;
  border-radius: 16px;
  border: 1px solid var(--line);
  background: var(--surface-2);
  color: var(--text);
  padding: 12px;
  text-align: left;
  display: grid;
  gap: 4px;
}

.export-route-grid i {
  font-size: 22px;
}

.export-route-grid span {
  font-weight: 950;
}

.export-route-grid small {
  color: var(--muted);
  font-size: 11px;
}

@media (max-width: 520px) {
  .export-route-grid {
    grid-template-columns: 1fr;
  }

  .export-route-grid button {
    min-height: 76px;
  }
}


/* ===== Fix menu routeMapSheet ===== */
.route-map-sheet-header {
  position: relative !important;
}

#routeMapSheetTitle {
  display: block !important;
  max-width: min(62vw, 360px) !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

#routeMapSheetAddStop {
  background: rgba(255,255,255,.08) !important;
  color: #fff !important;
  border: 1px solid rgba(255,255,255,.14) !important;
}

.route-sheet-more-menu {
  position: absolute;
  right: 0;
  top: calc(100% + 8px);
  min-width: 190px;
  padding: 8px;
  border-radius: 14px;
  background: rgba(10,16,28,.98);
  border: 1px solid rgba(255,255,255,.14);
  box-shadow: 0 18px 50px rgba(0,0,0,.42);
  display: none;
  z-index: 30;
}

.route-sheet-more-menu.show {
  display: block;
}

.route-sheet-more-menu button {
  width: 100%;
  min-height: 42px;
  border-radius: 10px;
  border: 0;
  background: rgba(255,255,255,.08);
  color: #fff;
  display: flex;
  align-items: center;
  gap: 9px;
  justify-content: flex-start;
  padding: 0 12px;
  font-weight: 900;
}


/* ===== Menu rápido exportar rota ===== */
.route-build-actions {
  position: relative;
}

.export-route-quick-menu {
  position: absolute;
  right: 0;
  top: calc(100% + 10px);
  z-index: 50;
  min-width: 150px;
  padding: 8px;
  border-radius: 14px;
  background: var(--surface);
  border: 1px solid rgba(255,255,255,.14);
  box-shadow: 0 18px 50px rgba(0,0,0,.42);
  display: grid;
  gap: 6px;
}

.export-route-quick-menu.hidden {
  display: none !important;
}

.export-route-quick-menu button {
  width: 100%;
  min-height: 42px;
  border: 0;
  border-radius: 10px;
  background: rgba(255,255,255,.08);
  color: #fff;
  display: flex;
  align-items: center;
  gap: 9px;
  justify-content: flex-start;
  padding: 0 12px;
  font-weight: 900;
}

.route-export-btn i {
  font-size: 20px;
}


/* ===== Correção: menu exportar abre para baixo ===== */
.export-route-quick-menu {
  top: calc(100% + 10px) !important;
  bottom: auto !important;
}


/* ===== Roteiro detalhe: somente um botão de voltar ===== */
body.roteiro-detail-active #pedidosPage > .orders-header,
body.roteiro-detail-active .route-detail-head-inline {
  display: none !important;
}

#roteiroPedidosPagination.hidden {
  display: none !important;
}


/* ===== Roteiro detalhe: título uma linha e paginação visível ===== */
body.roteiro-detail-active #topbarSubtitle {
  display: none !important;
}

body.roteiro-detail-active #topbarTitle {
  display: block !important;
  max-width: calc(100vw - 118px) !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  line-height: 1.08 !important;
}

body.roteiro-detail-active .topbar-title-row {
  min-width: 0 !important;
  display: flex !important;
  align-items: center !important;
}

body.roteiro-detail-active .topbar-title-row h1 {
  min-width: 0 !important;
}

body.roteiro-detail-active #roteiroPedidosPagination,
body.roteiro-detail-active #roteiroPedidosPagination:not(.hidden) {
  display: flex !important;
  visibility: visible !important;
  opacity: 1 !important;
  margin-top: 14px !important;
}

body.roteiro-detail-active #roteiroPedidosPagination.hidden {
  display: none !important;
}

body.roteiro-detail-active .route-detail-head-inline {
  display: none !important;
}

/* ===== Correções 02-06: faturamento e roteiros ===== */
.billing-screen .billing-title-row {
  display: flex !important;
  align-items: center !important;
  gap: 12px !important;
  width: 100% !important;
  min-width: 0 !important;
  margin-bottom: 18px !important;
}

.billing-screen .billing-title-row h1 {
  margin: 0 !important;
  min-width: 0 !important;
  flex: 1 !important;
  font-size: clamp(28px, 7vw, 42px) !important;
  line-height: 1.05 !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

.billing-screen .billing-title-row .topbar-back-btn {
  flex: 0 0 auto !important;
}

#roteirosListView .filters-card {
  margin-bottom: 14px !important;
}

#roteirosListPagination,
#roteiroPedidosPagination {
  width: 100% !important;
  display: grid !important;
  grid-template-columns: 52px minmax(0, 1fr) 52px !important;
  align-items: center !important;
  gap: 12px !important;
  margin: 22px 0 8px !important;
  padding: 0 !important;
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
}

#roteirosListPagination.hidden,
#roteiroPedidosPagination.hidden {
  display: none !important;
}

#roteirosListPagination button,
#roteiroPedidosPagination button {
  width: 52px !important;
  height: 52px !important;
  min-width: 52px !important;
  min-height: 52px !important;
  border-radius: 16px !important;
  border: 1px solid var(--line-strong, rgba(255,255,255,.18)) !important;
  background: var(--surface-2, rgba(255,255,255,.08)) !important;
  color: var(--text, #fff) !important;
  display: grid !important;
  place-items: center !important;
  padding: 0 !important;
  margin: 0 !important;
  font-size: 18px !important;
}

#roteirosListPagination span,
#roteiroPedidosPagination span {
  display: block !important;
  width: 100% !important;
  text-align: center !important;
  color: var(--text, #fff) !important;
  font-weight: 950 !important;
  font-size: 14px !important;
  white-space: nowrap !important;
}

@media (max-width: 520px) {
  #roteirosListPagination,
  #roteiroPedidosPagination {
    grid-template-columns: 48px minmax(0, 1fr) 48px !important;
    gap: 10px !important;
    margin-top: 18px !important;
  }

  #roteirosListPagination button,
  #roteiroPedidosPagination button {
    width: 48px !important;
    height: 48px !important;
    min-width: 48px !important;
    min-height: 48px !important;
  }
}

.gps-nav-top-card, .gps-nav-bottom-card, .gps-nav-side-actions button, .route-map-sheet {
    background: rgb(6 6 7 / 93%) !important;
}

.route-map-sheet {
    background: rgb(6 6 7 / 93%) !important;
}

.menu-list button {
    gap: 0px !important;
}



/* ===== Ajustes solicitados: espaçamento, botões home e mapa persistente ===== */
.page,
.overlay-screen,
.content,
.app {
  padding-bottom: min(20px, env(safe-area-inset-bottom) + 20px) !important;
}

.content {
  margin-bottom: 0 !important;
}

.page > *:last-child,
.overlay-screen > *:last-child {
  margin-bottom: 0 !important;
}

#dashboard .d-flex.gap-2 {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  gap: 10px !important;
  width: 100% !important;
  align-items: stretch !important;
}

#dashboard .d-flex.gap-2 .btn {
  width: 100% !important;
  min-width: 0 !important;
  min-height: 50px !important;
  height: 50px !important;
  padding: 0 10px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 8px !important;
  white-space: nowrap !important;
  font-size: 14px !important;
}

#dashboard .d-flex.gap-2 .btn i {
  font-size: 15px !important;
  margin: 0 !important;
}

.route-map-floating {
  z-index: 9998 !important;
}

@media (max-width: 340px) {
  #dashboard .d-flex.gap-2 {
    grid-template-columns: 1fr !important;
  }
}

#dashboard .home-primary-actions {
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  gap: 10px !important;
}
#dashboard .home-primary-actions .btn {
  min-height: 50px !important;
  height: 50px !important;
  font-size: 14px !important;
  padding: 0 10px !important;
}
@media (max-width: 340px) {
  #dashboard .home-primary-actions {
    grid-template-columns: 1fr !important;
  }
}


/* ===== Botão notificações da rota ===== */
.route-notification-btn {
  width: 100%;
  min-height: 50px;
  margin-top: 10px;
  background: rgba(255,255,255,.08) !important;
  border: 1px solid rgba(255,255,255,.16) !important;
  color: #fff !important;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
}

.route-notification-btn.hidden {
  display: none !important;
}

.route-notification-btn:disabled {
  opacity: .55;
}


/* ===== Modal de permissões após login ===== */
.auth-permission-modal {
  position: fixed;
  inset: 0;
  z-index: 99999;
  background: rgba(0,0,0,.78);
  backdrop-filter: blur(18px);
  display: grid;
  place-items: center;
  padding: 24px;
}

.auth-permission-modal.hidden {
  display: none !important;
}

.auth-permission-card {
  width: min(100%, 380px);
  border-radius: 18px;
  background: #151515;
  border: 1px solid rgba(255,255,255,.16);
  padding: 24px;
  color: #fff;
  text-align: center;
  box-shadow: 0 24px 80px rgba(0,0,0,.45);
}

.auth-permission-icon {
  width: 58px;
  height: 58px;
  border-radius: 999px;
  margin: 0 auto 16px;
  display: grid;
  place-items: center;
  border: 1px solid rgba(255,255,255,.18);
}

.auth-permission-icon i {
  font-size: 24px;
}

.auth-permission-card h2 {
  margin: 0 0 10px;
  font-size: 28px;
  letter-spacing: -.05em;
}

.auth-permission-card p {
  color: rgba(255,255,255,.68);
  line-height: 1.35;
  margin: 0 0 18px;
}

.auth-skip-btn {
  width: 100%;
  min-height: 48px;
  margin-top: 10px;
  background: transparent;
  border: 0;
  color: rgba(255,255,255,.68);
  font-weight: 800;
}


/* ===== Correção desktop/mobile: sem vazamento horizontal ===== */
html,
body {
  width: 100% !important;
  max-width: 100% !important;
  overflow-x: hidden !important;
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

.app {
  width: min(100vw, 430px) !important;
  max-width: 430px !important;
  min-width: 0 !important;
  margin-left: auto !important;
  margin-right: auto !important;
  overflow-x: hidden !important;
  position: relative !important;
}

.content,
.page,
.overlay-screen,
.topbar,
.bottom-nav {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  overflow-x: hidden !important;
}

.page.active {
  overflow-x: hidden !important;
}

img,
video,
canvas,
svg {
  max-width: 100% !important;
}

table {
  max-width: 100%;
}

.route-table-scroll,
.route-table-wrap,
.table-responsive,
.route-results,
#xlsxRouteResults,
#roteiroTableWrap {
  max-width: 100% !important;
  overflow-x: auto !important;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
}

#dashboard .d-flex.gap-2,
#dashboard .home-primary-actions {
  width: 100% !important;
  max-width: 100% !important;
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  gap: 10px !important;
}

#dashboard .d-flex.gap-2 .btn,
#dashboard .home-primary-actions .btn {
  min-width: 0 !important;
  width: 100% !important;
  max-width: 100% !important;
}

/* Mantém o botão flutuante do mapa dentro da largura visual do app */
.route-map-floating {
  position: fixed !important;
  right: max(16px, calc((100vw - min(100vw, 430px)) / 2 + 16px)) !important;
  left: auto !important;
  bottom: calc(92px + env(safe-area-inset-bottom)) !important;
  z-index: 9998 !important;
  width: 54px !important;
  height: 54px !important;
  max-width: 54px !important;
  max-height: 54px !important;
}

/* Se o JS de arrastar colocar left/top, ainda limita visualmente */
.route-map-floating[style] {
  max-width: 54px !important;
  max-height: 54px !important;
}

@media (min-width: 431px) {
  body {
    background: #000 !important;
  }

  .route-map-floating {
    transform: none !important;
  }
}

@media (max-width: 430px) {
  .app {
    width: 100vw !important;
    max-width: 100vw !important;
  }

  .route-map-floating {
    right: 16px !important;
    bottom: calc(92px + env(safe-area-inset-bottom)) !important;
  }
}

@media (max-width: 340px) {
  #dashboard .d-flex.gap-2,
  #dashboard .home-primary-actions {
    grid-template-columns: 1fr !important;
  }
}


/* ===== Correção final: botões da Home dentro do app no desktop/mobile ===== */
.home-hero-screen .d-flex,
.home-hero-screen .dashboard-actions,
#dashboard.home-hero-screen .d-flex.gap-2,
#dashboard.home-hero-screen .home-primary-actions {
  position: fixed !important;
  left: 50% !important;
  right: auto !important;
  bottom: 28px !important;
  width: min(calc(100vw - 48px), 382px) !important;
  max-width: 382px !important;
  min-width: 0 !important;
  transform: translateX(-50%) !important;
  z-index: 1000 !important;
  display: grid !important;
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  gap: 10px !important;
  margin: 0 !important;
  padding: 0 !important;
  overflow: visible !important;
}

.home-hero-screen .d-flex::before,
.home-hero-screen .dashboard-actions::before,
#dashboard.home-hero-screen .d-flex.gap-2::before,
#dashboard.home-hero-screen .home-primary-actions::before {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
}

.home-hero-screen .d-flex .btn,
.home-hero-screen .dashboard-actions .btn,
#dashboard.home-hero-screen .d-flex.gap-2 .btn,
#dashboard.home-hero-screen .home-primary-actions .btn {
  min-width: 0 !important;
  width: 100% !important;
  max-width: 100% !important;
  overflow: hidden !important;
}

@media (min-width: 431px) {
  .home-hero-screen .d-flex,
  .home-hero-screen .dashboard-actions,
  #dashboard.home-hero-screen .d-flex.gap-2,
  #dashboard.home-hero-screen .home-primary-actions {
    /* 430px app - 48px laterais, igual mobile */
    width: 382px !important;
    max-width: 382px !important;
  }
}

@media (max-width: 340px) {
  .home-hero-screen .d-flex,
  .home-hero-screen .dashboard-actions,
  #dashboard.home-hero-screen .d-flex.gap-2,
  #dashboard.home-hero-screen .home-primary-actions {
    grid-template-columns: 1fr !important;
    width: calc(100vw - 48px) !important;
  }
}


/* ===== Correção final: menu dentro da largura do app no desktop/mobile ===== */
#sideMenuPage.overlay-screen,
.overlay-screen.menu-screen {
  position: fixed !important;
  top: 0 !important;
  left: 50% !important;
  right: auto !important;
  bottom: 0 !important;
  transform: translateX(-50%) !important;
  width: min(100vw, 430px) !important;
  max-width: 430px !important;
  min-width: 0 !important;
  height: 100dvh !important;
  overflow-x: hidden !important;
  overflow-y: auto !important;
  padding-left: 24px !important;
  padding-right: 24px !important;
  box-sizing: border-box !important;
}

#sideMenuPage .menu-actions,
#sideMenuPage .menu-user,
#sideMenuPage .menu-list,
#sideMenuPage .menu-section-title,
#sideMenuPage .menu-sub-code,
#sideMenuPage .subscription-card,
#sideMenuPage .menu-footer {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  box-sizing: border-box !important;
}

#sideMenuPage .menu-list button {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  grid-template-columns: 42px minmax(0, 1fr) 28px !important;
}

#sideMenuPage .menu-list strong,
#sideMenuPage .menu-user h2,
#sideMenuPage .menu-user p,
#sideMenuPage .menu-sub-code,
#sideMenuPage .subscription-card strong,
#sideMenuPage .subscription-card span {
  min-width: 0 !important;
  max-width: 100% !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: nowrap !important;
}

#sideMenuPage .subscription-card {
  display: grid !important;
  grid-template-columns: 46px minmax(0, 1fr) 28px !important;
  gap: 12px !important;
}

@media (min-width: 431px) {
  #sideMenuPage.overlay-screen,
  .overlay-screen.menu-screen {
    width: 430px !important;
    max-width: 430px !important;
  }
}

@media (max-width: 430px) {
  #sideMenuPage.overlay-screen,
  .overlay-screen.menu-screen {
    width: 100vw !important;
    max-width: 100vw !important;
  }
}


/* ===== Correção global: páginas overlay e modais dentro da largura do app ===== */
:root {
  --app-mobile-width: min(100vw, 430px);
}

#billingPage.overlay-screen,
#profileEditor.overlay-screen,
#pedidosPage.overlay-screen,
#perfilPage.overlay-screen,
#rotaPage.overlay-screen,
.overlay-screen:not(#sideMenuPage),
.billing-screen,
.profile-editor-screen {
  position: fixed !important;
  top: 0 !important;
  left: 50% !important;
  right: auto !important;
  bottom: 0 !important;
  transform: translateX(-50%) !important;
  width: var(--app-mobile-width) !important;
  max-width: 430px !important;
  min-width: 0 !important;
  height: 100dvh !important;
  overflow-x: hidden !important;
  overflow-y: auto !important;
  padding-left: 24px !important;
  padding-right: 24px !important;
  box-sizing: border-box !important;
}

/* Modal/backdrop centralizados no frame do app */
.cep-modal,
.scan-modal,
#xlsxRouteSetupModal,
#exportRouteModal,
#scanModal,
.modal,
.route-map-modal,
.scanner-overlay-app {
  position: fixed !important;
  top: 0 !important;
  left: 50% !important;
  right: auto !important;
  bottom: 0 !important;
  transform: translateX(-50%) !important;
  width: var(--app-mobile-width) !important;
  max-width: 430px !important;
  min-width: 0 !important;
  height: 100dvh !important;
  max-height: 100dvh !important;
  overflow-x: hidden !important;
  box-sizing: border-box !important;
}

/* Conteúdo dos modais nunca deve sair para os lados */
.cep-modal-card,
.scan-modal-card,
.modal-content,
.xlsx-route-setup-card,
.export-route-modal-card,
#xlsxRouteSetupModal > *,
#exportRouteModal > *,
.scan-modal-card {
  width: calc(100% - 32px) !important;
  max-width: 398px !important;
  min-width: 0 !important;
  margin-left: auto !important;
  margin-right: auto !important;
  box-sizing: border-box !important;
}

/* Página Meu Plano/Faturamento dentro do app */
#billingPage,
.billing-screen {
  background: #000 !important;
}

#billingPage .billing-balance-card,
#billingPage .billing-list,
#billingPage .billing-title-row,
#billingPage .billing-list button {
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  box-sizing: border-box !important;
}

#billingPage .billing-list button {
  grid-template-columns: 42px minmax(0, 1fr) 28px !important;
}

#billingPage .billing-list strong,
#billingPage .billing-list span,
#billingPage .billing-balance-card * {
  min-width: 0 !important;
  max-width: 100% !important;
}

#billingPage .billing-balance-card button {
  width: 100% !important;
  max-width: 100% !important;
}

/* Força qualquer fixed antigo a respeitar o frame mobile */
@media (min-width: 431px) {
  #billingPage.overlay-screen,
  #profileEditor.overlay-screen,
  #pedidosPage.overlay-screen,
  #perfilPage.overlay-screen,
  #rotaPage.overlay-screen,
  .overlay-screen:not(#sideMenuPage),
  .billing-screen,
  .profile-editor-screen,
  .cep-modal,
  .scan-modal,
  #xlsxRouteSetupModal,
  #exportRouteModal,
  #scanModal,
  .modal,
  .route-map-modal,
  .scanner-overlay-app {
    width: 430px !important;
    max-width: 430px !important;
  }
}

@media (max-width: 430px) {
  #billingPage.overlay-screen,
  #profileEditor.overlay-screen,
  #pedidosPage.overlay-screen,
  #perfilPage.overlay-screen,
  #rotaPage.overlay-screen,
  .overlay-screen:not(#sideMenuPage),
  .billing-screen,
  .profile-editor-screen,
  .cep-modal,
  .scan-modal,
  #xlsxRouteSetupModal,
  #exportRouteModal,
  #scanModal,
  .modal,
  .route-map-modal,
  .scanner-overlay-app {
    width: 100vw !important;
    max-width: 100vw !important;
  }
}


/* ===== Correção route-map-sheet desktop/mobile ===== */
#routeMapModal {
  overflow: hidden !important;
}

#routeMapModal .route-map-sheet,
.route-map-modal .route-map-sheet {
  position: absolute !important;
  left: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  box-sizing: border-box !important;
  max-height: min(64dvh, 560px) !important;
  overflow: hidden !important;
  z-index: 5200 !important;
}

.route-map-sheet *,
.route-map-sheet *::before,
.route-map-sheet *::after {
  box-sizing: border-box !important;
}

.route-map-sheet-header {
  min-width: 0 !important;
}

.route-map-sheet-header > div {
  min-width: 0 !important;
  flex: 1 1 auto !important;
}

#routeMapSheetTitle {
  max-width: 100% !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

.route-map-sheet-stops {
  min-width: 0 !important;
  max-width: 100% !important;
  overflow-x: hidden !important;
}

.route-map-sheet-stop {
  min-width: 0 !important;
  max-width: 100% !important;
}

.route-map-sheet-actions {
  max-width: 100% !important;
  min-width: 0 !important;
  display: grid !important;
  grid-template-columns: 48px 48px minmax(88px, 1fr) minmax(88px, 1fr) !important;
  gap: 6px !important;
  overflow: hidden !important;
}

.route-map-sheet-actions button {
  min-width: 0 !important;
  max-width: 100% !important;
  height: 44px !important;
  padding: 0 8px !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

.route-map-sheet-address,
.route-map-sheet-stop strong,
.route-map-sheet-stop span,
.route-map-sheet-stop small {
  min-width: 0 !important;
  max-width: 100% !important;
  overflow-wrap: anywhere !important;
}

@media (min-width: 431px) {
  #routeMapModal.route-map-modal,
  .route-map-modal {
    width: 430px !important;
    max-width: 430px !important;
    left: 50% !important;
    transform: translateX(-50%) !important;
    right: auto !important;
  }

  #routeMapModal .route-map-sheet,
  .route-map-modal .route-map-sheet {
    width: 430px !important;
    max-width: 430px !important;
    left: 0 !important;
    right: 0 !important;
  }

  .route-map-sheet-actions {
    grid-template-columns: 48px 48px 1fr 1fr !important;
  }
}

@media (max-width: 430px) {
  .route-map-sheet-actions {
    grid-template-columns: 48px 48px 1fr 1fr !important;
  }
}

@media (max-width: 360px) {
  .route-map-sheet-actions {
    grid-template-columns: 1fr 1fr !important;
  }
}


/* ===== Header Meu Plano igual às outras páginas ===== */
#billingPage .billing-title-row,
.billing-screen .billing-title-row {
  position: relative !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 100% !important;
  min-height: 54px !important;
  margin: 4px 0 28px !important;
  padding: 0 !important;
}

#billingPage .billing-title-row::after,
.billing-screen .billing-title-row::after {
  content: none !important;
  display: none !important;
}

#billingPage .billing-title-row .topbar-back-btn,
.billing-screen .billing-title-row .topbar-back-btn {
  position: absolute !important;
  left: 0 !important;
  top: 50% !important;
  transform: translateY(-50%) !important;
  width: 48px !important;
  height: 48px !important;
  min-width: 48px !important;
  border-radius: 999px !important;
  background: transparent !important;
  border: 0 !important;
  color: #fff !important;
  display: grid !important;
  place-items: center !important;
  padding: 0 !important;
  margin: 0 !important;
}

#billingPage .billing-title-row h1,
.billing-screen .billing-title-row h1 {
  display: block !important;
  width: auto !important;
  max-width: calc(100% - 112px) !important;
  margin: 0 auto !important;
  color: #fff !important;
  text-align: center !important;
  font-size: clamp(30px, 7vw, 42px) !important;
  font-weight: 900 !important;
  line-height: 1.04 !important;
  letter-spacing: -.055em !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

/* Remove espaçamento extra que vinha do layout antigo do billing */
#billingPage .billing-balance-card,
.billing-screen .billing-balance-card {
  margin-top: 0 !important;
}


/* ===== Meu Plano usa exatamente o header padrão das telas internas ===== */
#billingPage .billing-screen-title-row {
  display: grid !important;
  grid-template-columns: 44px minmax(0, 1fr) 44px !important;
  align-items: center !important;
  width: 100% !important;
  min-height: 54px !important;
  margin: 54px 0 28px !important;
  padding: 0 !important;
  gap: 0 !important;
}

#billingPage .billing-screen-title-row h2 {
  margin: 0 !important;
  color: #fff !important;
  text-align: center !important;
  font-size: 32px !important;
  line-height: 1.05 !important;
  letter-spacing: -.04em !important;
  font-weight: 900 !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

#billingPage .billing-screen-title-row .back-btn {
  position: static !important;
  transform: none !important;
  margin: 0 !important;
  width: 42px !important;
  height: 42px !important;
  border: 0 !important;
  background: transparent !important;
  color: #fff !important;
  font-size: 22px !important;
  display: grid !important;
  place-items: center !important;
  padding: 0 !important;
}

#billingPage .billing-screen-title-row::after,
#billingPage .billing-screen-title-row h2::after {
  display: none !important;
  content: none !important;
}

#billingPage .billing-balance-card {
  margin-top: 0 !important;
}


/* ===== FINAL: Header Meu Plano igual ao header padrão ===== */
#billingPage.billing-screen {
  padding-top: 31px !important;
}

#billingPage .billing-screen-title-row {
  display: grid !important;
  grid-template-columns: 44px minmax(0, 1fr) 44px !important;
  align-items: center !important;
  width: 100% !important;
  max-width: 100% !important;
  min-height: 44px !important;
  margin: 0 0 64px !important;
  padding: 0 !important;
  gap: 0 !important;
}

#billingPage .billing-screen-title-row .back-btn {
  position: static !important;
  left: auto !important;
  top: auto !important;
  transform: none !important;
  margin: 0 !important;
  width: 44px !important;
  height: 44px !important;
  min-width: 44px !important;
  min-height: 44px !important;
  border: 0 !important;
  background: transparent !important;
  color: #fff !important;
  display: grid !important;
  place-items: center !important;
  padding: 0 !important;
  font-size: 22px !important;
  line-height: 1 !important;
}

#billingPage .billing-screen-title-row h2 {
  margin: 0 !important;
  padding: 0 !important;
  color: #fff !important;
  text-align: center !important;
  font-size: 24px !important;
  line-height: 1.05 !important;
  letter-spacing: -.045em !important;
  font-weight: 900 !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

#billingPage .billing-screen-title-row span {
  display: block !important;
  width: 44px !important;
  height: 44px !important;
}

#billingPage .billing-title-row,
#billingPage .topbar-title-row.billing-title-row {
  display: none !important;
}

#billingPage .billing-screen-title-row::after,
#billingPage .billing-screen-title-row h2::after,
#billingPage .billing-title-row::after {
  content: none !important;
  display: none !important;
}

#billingPage .billing-balance-card {
  margin-top: 0 !important;
}


/* ===== Configurações de navegação e chegada ao destino ===== */
.settings-screen {
  padding-top: 54px !important;
}

.settings-card {
  width: 100%;
  border: 1px solid rgba(255,255,255,.18);
  background: #151515;
  border-radius: 8px;
  padding: 18px;
  color: #fff;
}

.settings-card label {
  display: block;
  font-size: 18px;
  font-weight: 900;
  letter-spacing: -.03em;
  margin-bottom: 12px;
}

.settings-card p {
  margin: 12px 0 0;
  color: rgba(255,255,255,.62);
  line-height: 1.35;
  font-size: 13px;
}

.nav-preference-options {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}

.nav-preference-options button {
  min-height: 54px;
  border-radius: 8px;
  border: 1px solid rgba(255,255,255,.14);
  background: rgba(255,255,255,.06);
  color: #fff;
  font-weight: 900;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
}

.nav-preference-options button.active {
  background: #fff;
  color: #000;
}

/* ===== Botão instalar PWA nas configurações ===== */
.pwa-install-card {
  margin-top: 12px;
}

.pwa-install-btn {
  margin-top: 10px;
  width: 100%;
  min-height: 52px;
  border: 0;
  border-radius: 4px;
  background: #fff;
  color: #000;
  font-weight: 900;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
}

.pwa-install-btn:disabled {
  opacity: .65;
}

.pwa-ios-guide {
  margin-top: 12px;
  padding: 12px;
  border-radius: 8px;
  background: rgba(255,255,255,.08);
  border: 1px solid rgba(255,255,255,.12);
  display: grid;
  gap: 4px;
}

.pwa-ios-guide strong {
  color: #fff;
}

.pwa-ios-guide span {
  color: rgba(255,255,255,.68);
  line-height: 1.35;
  font-size: 13px;
}


/* ===== Notificações nas configurações ===== */
.notification-settings-card {
  margin-top: 12px;
}

.notification-settings-card .route-notification-btn {
  display: flex !important;
  width: 100%;
  min-height: 52px;
  margin-top: 10px;
  border-radius: 8px;
  align-items: center;
  justify-content: center;
  gap: 10px;
}

.notification-settings-card .route-notification-btn.hidden {
  display: flex !important;
}


/* ===== Limpeza funcional mantendo design original ===== */
#routeMapModal,
#routeMapFloatingBtn,
#exportRouteModal,
#xlsxRouteSetupModal,
#pedidosPage,
#routeNotificationBtn,
.notification-settings-card,
.nav-preference-options,
#exportRouteQuickMenu,
.route-export-btn {
  display: none !important;
}

.pdf-route-table th:nth-child(1),
.pdf-route-table td:nth-child(1) {
  width: 54px;
  text-align: center;
}

.pdf-route-table th:nth-child(2),
.pdf-route-table td:nth-child(2) {
  min-width: 150px;
}

.menu-logout-btn {
  margin-top: 8px;
}

.menu-logout-btn i:first-child {
  color: #ff7a7a;
}

/* ===== Perfil compacto - tema atual ===== */
.account-page.active #profileEditor {
  min-height: 100%;
}

.profile-compact-head {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 0 0 14px;
  padding: 12px;
  border: 1px solid rgba(255,255,255,.10);
  border-radius: 10px;
  background: linear-gradient(135deg, rgba(255,255,255,.10), rgba(255,255,255,.035));
  box-shadow: 0 18px 40px rgba(0,0,0,.22);
}

.profile-avatar-mini {
  width: 44px;
  height: 44px;
  flex: 0 0 44px;
  border-radius:50px;
  display: grid;
  place-items: center;
  color: #fff;
  background: rgba(255,255,255,.12);
  border: 1px solid rgba(255,255,255,.14);
}

.profile-compact-head strong {
  display: block;
  color: #fff;
  font-size: 1.02rem;
  letter-spacing: -.02em;
}

.profile-compact-head span {
  display: block;
  color: rgba(255,255,255,.58);
  font-size: .78rem;
  margin-top: 2px;
}

.profile-panel {
  margin: 10px 0;
  padding: 12px;
  border-radius: 10px;
  border: 1px solid rgba(255,255,255,.09);
  background: rgba(255,255,255,.055);
  box-shadow: 0 16px 36px rgba(0,0,0,.20);
}

.profile-panel-title {
  display: flex;
  align-items: center;
  gap: 9px;
  margin-bottom: 10px;
  color: #fff;
  font-weight: 800;
  font-size: .9rem;
}

.profile-panel-title i {
  width: 28px;
  height: 28px;
  border-radius: 50px;
  display: grid;
  place-items: center;
  background: rgba(255,255,255,.10);
  color: rgba(255,255,255,.88);
  font-size: .82rem;
}

.compact-field {
  display: block;
  margin: 8px 0;
}

.compact-field span {
  display: block;
  margin: 0 0 5px 4px;
  color: rgba(255,255,255,.62);
  font-size: .72rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .06em;
}

.compact-field input {
  width: 100%;
  height: 44px;
  border: 1px solid rgba(255,255,255,.10);
  border-radius: 4px;
  padding: 0 13px;
  outline: none;
  color: #fff;
  background: rgba(0,0,0,.26);
  font-size: .94rem;
  transition: border-color .18s ease, background .18s ease, box-shadow .18s ease;
}

.compact-field input:focus {
  border-color: rgba(255,255,255,.28);
  background: rgba(0,0,0,.34);
  box-shadow: 0 0 0 4px rgba(255,255,255,.06);
}

.compact-field input::placeholder {
  color: rgba(255,255,255,.32);
}

.profile-save-btn {
  margin-top: 12px !important;
  min-height: 48px !important;
  border-radius: 16px !important;
  font-weight: 900 !important;
}

.profile-editor .info-box,
.profile-editor .edit-card {
  display: none !important;
}

/* Página de erro padrão */
.error-page .error-shell {
  min-height: 100dvh;
  justify-content: center;
}

.error-panel {
  text-align: center;
  gap: 16px;
  padding: 28px 24px;
}

.error-icon {
  width: 68px;
  height: 68px;
  border-radius: 22px;
  display: grid;
  place-items: center;
  margin: 0 auto 4px;
  color: var(--accent, #fff);
  background: rgba(255,255,255,.08);
  border: 1px solid rgba(255,255,255,.12);
  box-shadow: 0 18px 45px rgba(0,0,0,.26);
  font-size: 28px;
}

.error-code {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 7px 14px;
  border-radius: 999px;
  margin: 0 auto;
  font-weight: 800;
  letter-spacing: .14em;
  background: rgba(255,255,255,.08);
  border: 1px solid rgba(255,255,255,.1);
  color: rgba(255,255,255,.76);
}

.error-panel h1 {
  margin: 0;
  font-size: clamp(1.45rem, 5vw, 2.1rem);
}

.error-panel p {
  margin: 0 auto;
  max-width: 380px;
  color: rgba(255,255,255,.68);
  line-height: 1.5;
}

.error-actions {
  width: 100%;
  display: grid;
  gap: 10px;
  margin-top: 8px;
}

.error-actions a {
  text-decoration: none;
}

.ghost-btn {
  background: rgba(255,255,255,.08) !important;
  border: 1px solid rgba(255,255,255,.12) !important;
  color: #fff !important;
}


[class*="notiflix-confirm-overlay"],
[id*="ConfirmOverlay"] {
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
}

.billing-balance-card small { display:block; margin: 8px 0 12px; color: rgba(255,255,255,.72); }
.billing-balance-card small.danger { color: #ffb4b4; font-weight: 700; }
#billingPayBtn:disabled { opacity: .55; cursor: not-allowed; }
.modal-overlay { position: fixed; inset: 0; background: rgba(0,0,0,.62); z-index: 2147483000; display: flex; align-items: center; justify-content: center; padding: 20px; backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); }
.modal-overlay.hidden { display: none; }
.modal-card { width: min(420px, 100%); background: #111827; color: #fff; border: 1px solid rgba(255,255,255,.12); border-radius: 22px; padding: 22px; box-shadow: 0 30px 90px rgba(0,0,0,.45); position: relative; }
.modal-close { position:absolute; top: 14px; right: 14px; border:0; background: rgba(255,255,255,.1); color:#fff; border-radius: 999px; width: 34px; height: 34px; }
.pix-modal-card h2 { margin: 0 0 8px; }
.pix-qr { display:block; width: 260px; height: 260px; max-width: 100%; margin: 14px auto; background:#fff; padding: 10px; border-radius: 16px; }
#pixCopyPaste { width: 100%; resize: vertical; border-radius: 14px; border: 1px solid rgba(255,255,255,.18); background: rgba(255,255,255,.08); color: #fff; padding: 12px; }


.app-toast-stack{
    position:absolute;
    top:18px;
    right:14px;
    left:14px;
    z-index:99999;
    display:flex;
    flex-direction:column;
    gap:10px;
    pointer-events:none
}
.app-toast{
    max-width:420px;
    margin-left:auto;
    padding:14px 16px;
    border-radius:18px;
    background:#111827;
    color:#fff;
    border:1px solid rgba(255,255,255,.14);
    box-shadow:0 18px 40px rgba(0,0,0,.35);
    font-weight:800;
    font-size:13px;
    opacity:0;
    transform:translateY(-10px);
    transition:.22s ease
}
.app-toast.show{
    opacity:1;
    transform:translateY(0)
}
.app-toast.success{
    background:#063f2b
}
.app-toast.error{
    background:#4a1115
}
.app-toast.warning{
    background:#4a3308;
    color:#fff
}
.benefits-screen{
    padding:28px;
    color:#fff;
    overflow:auto
}
.benefits-card{
    background: #121212;
    border-radius:10px;
    border:1px solid rgba(255,255,255,.12);
    padding:24px;
    margin-bottom:18px
}
.benefits-card span{
    color:#8ea0bd;
    font-size:12px;
    text-transform:uppercase;
    letter-spacing:.12em
}
.benefits-card h2{
    font-size:28px;
    margin:8px 0
}
.benefits-card p{
    color:#b6c2d6;
    line-height:1.5
}
.affiliate-grid{
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:12px;
    margin-bottom:16px
}
.affiliate-grid article{
    background: #121212;
    border-radius:10px;
    border:1px solid rgba(255,255,255,.1);
    padding:18px
}
.affiliate-grid span{
    display:block;
    color:#8ea0bd;
    font-size:12px;
    margin-bottom:8px
}
.affiliate-grid strong{
    font-size:22px
}
.affiliate-link-field input{
    width:100%;
    background: #121212;
    border:1px solid rgba(255,255,255,.16);
    border-radius:4px;
    color:#fff;
    padding:14px
}
.benefits-history{
    margin-top:24px
}
.benefits-history h3{
    margin-bottom:12px
}
.benefits-empty{
    color:#8ea0bd;
    background: #121212;
    border-radius:10px;
    border:1px dashed rgba(255,255,255,.18);
    padding:16px
}
.benefits-conversion{
    display:flex;
    align-items:center;
    justify-content:space-between;
    background:#0b0f17;
    border:1px solid rgba(255,255,255,.1);
    border-radius:18px;
    padding:14px;
    margin-bottom:10px
}
.benefits-conversion span{
    display:block;
    color:#8ea0bd;
    font-size:12px;
    margin-top:4px
}
.benefits-conversion b{
    color:#19c37d
}

.notiflix-confirm-content{
  border-radius: 10px !important;
}

[id^="NotiflixConfirmWrap"] > div[class*="-content"] > div[class*="-buttons"] > a.nx-confirm-button-ok {
  background: #171717 !important;
  border-radius: 4px !important;
}

[id^="NotiflixConfirmWrap"] > div[class*="-content"] > div[class*="-buttons"] > a.nx-confirm-button-cancel {
  border-radius: 4px !important;
}

.topbar-title-row {
  margin-top: -7px;
}

.route-card, .route-summary, .route-history-panel {
  margin-bottom: 0px !important;
}

.route-xlsx-filter {
  margin: 0px 0 !important;
}

@media (min-width: 481px) {
  .app {
      border-left: 0px !important;
      border-right: 0px !important;
  }
}

.overlay-screen, .menu-screen {
  border-left: 0px !important;
  border-right: 0px !important;
}

body.modal-open { overflow: hidden; }
.benefits-welcome-overlay {
    padding: 22px;
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    background: rgba(0,0,0,.68);
}
.benefits-image-modal {
    position: relative;
    width: min(430px, calc(100vw - 32px));
    margin: auto;
}
.benefits-image-button {
    display: block;
    width: 100%;
    padding: 0;
    border: 0;
    background: transparent;
    cursor: pointer;
}
.benefits-welcome-image {
    display: block;
    width: 100%;
    height: auto;
    border-radius: 18px;
    box-shadow: 0 30px 90px rgba(0,0,0,.55);
}
.benefits-image-close {
    top: -14px;
    right: -10px;
    z-index: 3;
}



.benefits-image-modal{
  transform: translateY(-40px);
  text-align:center;
}

.benefits-cta-button{
  margin-top:16px;
  width:100%;
  max-width:420px;
  padding:14px 18px;
  border-radius:4px !important;
  border:none;
  cursor:pointer;
  font-weight:700;
}

.benefits-cta-text{
  max-width:420px;
  margin:14px auto 0;
  line-height:1.5;
  text-align:center;
}


/* Loading inicial: nenhum conteúdo do app aparece antes de terminar o carregamento */
body.scan-app-loading .app,
body.scan-app-loading .scan-modal,
body.scan-app-loading .modal-overlay {
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

body.scan-app-ready .app {
  visibility: visible;
  opacity: 1;
}

#NotiflixLoadingWrap {
  z-index: 999999 !important;
}


/* Reforço do loading inicial Notiflix: mantém o spinner animado e acima de tudo */
#NotiflixLoadingWrap,
[id^="NotiflixLoadingWrap"] {
  z-index: 2147483647 !important;
}

[id^="NotiflixLoadingWrap"] > div[class*="-icon"] {
  animation: scanHubNotiflixSpin 0.85s linear infinite !important;
  transform-origin: center center !important;
}

@keyframes scanHubNotiflixSpin {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

body.scan-app-loading {
  overflow: hidden !important;
}
