/*!*******************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[7].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[7].use[3]!./src/app/page.module.css ***!
  \*******************************************************************************************************************************************************************************************************************************************************************/
.page_page__ZU32B {
  position: relative;
  width: 100vw;
  height: 100vh;
  overflow: hidden;
  background: #f5f6f8;
}

.page_viewerShell__mHC7u {
  position: relative;
  width: 100%;
  height: 100%;
}

.page_canvasHost__phV_P {
  position: absolute;
  inset: 0;
}

.page_canvasHost__phV_P canvas {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  display: block;
}

.page_interfaceLayer__1MRRq {
  position: absolute;
  inset: 0;
  z-index: 12;
  pointer-events: none;
}

.page_layoutGrid__tcFOu {
  height: 100%;
  width: 100%;
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(0, 3.8fr) minmax(0, 1.1fr);
  padding: clamp(6px, 1vw, 16px);
  grid-gap: clamp(8px, 2vw, 24px);
  gap: clamp(8px, 2vw, 24px);
  pointer-events: none;
}

.page_columnLeft__yEV__,
.page_columnCenter__FFkXY,
.page_columnRight__gev7A {
  display: flex;
  flex-direction: column;
  pointer-events: none;
}

.page_columnLeft__yEV__ {
  justify-content: space-between;
  align-items: flex-start;
  gap: clamp(12px, 3vh, 24px);
  height: 100%;  /* Ensure column takes full height for space-between to work */
}

.page_columnCenter__FFkXY {
  justify-content: flex-start;
  align-items: center;
  gap: clamp(4px, 1vh, 12px);
}

.page_columnRight__gev7A {
  justify-content: space-between;
  align-items: flex-end;
  gap: clamp(12px, 3vh, 24px);
}

.page_columnLeft__yEV__ > *,
.page_columnCenter__FFkXY > *,
.page_columnRight__gev7A > * {
  pointer-events: auto;
}

.page_iconButton__l8erm {
  width: clamp(42px, 4.5vw, 58px);
  height: clamp(42px, 4.5vw, 58px);
  border-radius: 18px;
  border: 1px solid rgba(38, 45, 64, 0.18);
  background: rgba(255, 255, 255, 0.92);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: transform 0.18s ease, box-shadow 0.18s ease;
}

.page_iconButton__l8erm:hover {
  transform: translateY(-1px);
  box-shadow: 0 10px 24px rgba(0, 0, 0, 0.18);
}

.page_iconButton__l8erm svg {
  width: clamp(18px, 2.6vw, 24px);
  height: clamp(18px, 2.6vw, 24px);
  color: #283042;
}

.page_columnRight__gev7A .page_iconButton__l8erm {
  align-self: flex-end;
}

.page_streamButtonActive__I6X77 {
  border-color: rgba(239, 83, 80, 0.85);
}

.page_playIcon__hZ8WB polygon {
  fill: #1f7ae0;
}

.page_stopIcon__2o79x rect {
  fill: #ef5350;
}

.page_statusPanelWrapper__068qB {
  width: 100%;
}

.page_statusPanel__VO2IB {
  width: 100%;
  min-width: 200px;
  padding: clamp(14px, 2.2vw, 22px);
  border-radius: 18px;
  background: rgba(255, 255, 255, 0.96);
  border: 1px solid rgba(212, 220, 232, 0.75);
  box-shadow: 0 18px 36px rgba(0, 0, 0, 0.18);
  color: #2f3746;
}

.page_statusTitle___2VgO {
  font-size: clamp(11px, 1.2vw, 13px);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: rgba(70, 82, 104, 0.75);
  margin-bottom: 10px;
}

.page_statusGrid__FS1il {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  grid-gap: 8px 12px;
  gap: 8px 12px;
  font-size: clamp(11px, 1.3vw, 13px);
}

.page_statusKey__w_pov {
  color: rgba(70, 82, 104, 0.65);
}

.page_statusValue__Uz9Sy {
  text-align: right;
  font-weight: 600;
}

.page_progressBar__uaLaH {
  margin-top: 12px;
  height: 6px;
  border-radius: 999px;
  background: rgba(30, 62, 110, 0.12);
  overflow: hidden;
}

.page_progressFill__wUgtZ {
  height: 100%;
  background: linear-gradient(90deg, #1f7ae0, #63a6ff);
}

.page_coverageList__n_7b1 {
  margin-top: 10px;
  border-top: 1px solid rgba(30, 62, 110, 0.1);
  padding-top: 8px;
  display: flex;
  flex-direction: column;
  gap: 2px;
  font-size: clamp(10px, 1.1vw, 12px);
  color: rgba(70, 82, 104, 0.75);
}

.page_badgeIdle__2vdjP { color: #a0abbc; }
.page_badgeScan__j1MK2 { color: #1f7ae0; }
.page_badgeCoverage__DfK3I { color: #ff9f1c; }
.page_badgeObject__kl4LE { color: #ef476f; }
.page_badgeCompletion__rmwVf { color: #1fab89; }

.page_orientationBar__ZxzCS {
  width: 100%;
  display: flex;
  justify-content: center;
}

.page_notificationBar__Zgk_t {
  width: min(100%, 840px);
  padding: clamp(2px, 0.5vw, 6px) clamp(6px, 1.4vw, 12px);
  border-radius: clamp(14px, 2.6vw, 20px);
  background: rgba(255, 255, 255, 0.96);
  border: 1px solid rgba(200, 210, 226, 0.7);
  box-shadow: 0 10px 24px rgba(0, 0, 0, 0.14);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  text-align: center;
}

.page_phaseTag__vFnBY {
  font-size: clamp(7px, 0.8vw, 9px);
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: #8f99aa;
}

.page_notificationMessage__rD29k {
  margin: 0;
  font-size: clamp(18px, 2.4vw, 24px);
  font-weight: 600;
  color: #1f2b3d;
  line-height: 1.3;
}

/* Deviation warning styles */
.page_notificationWarning__6fCbH {
  background: linear-gradient(135deg, rgba(255, 193, 7, 0.15) 0%, rgba(255, 152, 0, 0.12) 100%);
  border-color: rgba(255, 152, 0, 0.4);
  animation: page_warningPulse__zBed9 0.8s ease-in-out infinite alternate;
}

.page_notificationError___pPJp {
  background: linear-gradient(135deg, rgba(244, 67, 54, 0.18) 0%, rgba(198, 40, 40, 0.14) 100%);
  border-color: rgba(244, 67, 54, 0.5);
  animation: page_errorPulse__h6dY3 0.5s ease-in-out infinite alternate;
}

.page_notificationMessageWarning__Llpns {
  color: #e65100;
}

.page_notificationMessageError__Hsy3M {
  color: #c62828;
}

@keyframes page_warningPulse__zBed9 {
  from { transform: scale(1); box-shadow: 0 10px 24px rgba(255, 152, 0, 0.2); }
  to { transform: scale(1.01); box-shadow: 0 12px 28px rgba(255, 152, 0, 0.35); }
}

@keyframes page_errorPulse__h6dY3 {
  from { transform: scale(1); box-shadow: 0 10px 24px rgba(244, 67, 54, 0.25); }
  to { transform: scale(1.02); box-shadow: 0 14px 32px rgba(244, 67, 54, 0.4); }
}

.page_pitchWrapper__QhEiz {
  flex: 1 1;
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: flex-end;
}

/* Capture control buttons container */
.page_captureButtons__nAtZG {
  display: flex;
  flex-direction: column;
  gap: 8px;
  align-self: flex-end;
}

.page_shotButton__Rrffn {
  pointer-events: auto;
  padding: 10px 18px;
  border-radius: 999px;
  border: 1px solid rgba(80, 200, 120, 0.3);
  background: rgba(80, 200, 120, 0.15);
  color: #2d5a3d;
  font-size: clamp(12px, 1.3vw, 14px);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  cursor: pointer;
  transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease;
}

.page_shotButton__Rrffn:hover {
  transform: translateY(-1px);
  background: rgba(80, 200, 120, 0.25);
  box-shadow: 0 10px 24px rgba(80, 200, 120, 0.2);
}

.page_shotButton__Rrffn:active {
  transform: translateY(0);
  background: rgba(80, 200, 120, 0.35);
}

.page_skipButton__O952c {
  pointer-events: auto;
  padding: 10px 18px;
  border-radius: 999px;
  border: 1px solid rgba(30, 62, 110, 0.2);
  background: rgba(255, 255, 255, 0.9);
  color: #1f2b3d;
  font-size: clamp(12px, 1.3vw, 14px);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  cursor: pointer;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.page_skipButton__O952c:hover {
  transform: translateY(-1px);
  box-shadow: 0 10px 24px rgba(0, 0, 0, 0.16);
}

.page_stopButton__kVGzS {
  pointer-events: auto;
  padding: 10px 18px;
  border-radius: 999px;
  border: 1px solid rgba(180, 60, 60, 0.3);
  background: rgba(220, 80, 80, 0.9);
  color: white;
  font-size: clamp(12px, 1.3vw, 14px);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  cursor: pointer;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.page_stopButton__kVGzS:hover {
  transform: translateY(-1px);
  background: rgba(200, 60, 60, 1);
  box-shadow: 0 10px 24px rgba(180, 60, 60, 0.3);
}

@media (max-width: 960px) {
  .page_layoutGrid__tcFOu {
    grid-template-columns: minmax(0, 1.2fr) minmax(0, 3fr) minmax(0, 1.2fr);
    gap: clamp(10px, 4vw, 24px);
  }

  .page_notificationBar__Zgk_t {
    width: min(100%, 600px);
  }
}

/* Settings Panel Overlay */
.page_settingsOverlay__rPww9 {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.6);
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  pointer-events: auto;
}

.page_settingsPanel__bAs_s {
  background: #ffffff;
  border-radius: 24px;
  width: 100%;
  max-width: 640px;
  max-height: 90vh;
  overflow-y: auto;
  box-shadow: 0 24px 48px rgba(0, 0, 0, 0.3);
}

.page_panelHeader__uwSS3 {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 24px 28px;
  border-bottom: 1px solid #e4e8ee;
}

.page_panelTitle__EogUC {
  font-size: 24px;
  font-weight: 700;
  color: #1f2b3d;
}

.page_streamStatus__CEITi {
  font-size: 12px;
  color: #8f99aa;
  margin-top: 4px;
}

.page_closeButton__fiZmr {
  padding: 10px 20px;
  border-radius: 12px;
  border: 1px solid #d4dce8;
  background: #f5f6f8;
  color: #1f2b3d;
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.2s ease;
}

.page_closeButton__fiZmr:hover {
  background: #e4e8ee;
  transform: translateY(-1px);
}

.page_panelBody__TACQQ {
  padding: 24px 28px;
}

.page_panelSection__Rl7bC {
  margin-bottom: 28px;
}

.page_panelSection__Rl7bC:last-child {
  margin-bottom: 0;
}

.page_sectionTitle__hzsAh {
  font-size: 14px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: #8f99aa;
  margin-bottom: 16px;
}

.page_field___uHMi {
  margin-bottom: 16px;
}

.page_field___uHMi label {
  display: block;
  font-size: 13px;
  font-weight: 600;
  color: #465268;
  margin-bottom: 6px;
}

.page_select__MPBgi,
.page_field___uHMi input[type="text"],
.page_field___uHMi input[type="number"] {
  width: 100%;
  padding: 10px 14px;
  border-radius: 10px;
  border: 1px solid #d4dce8;
  background: #ffffff;
  font-size: 14px;
  color: #1f2b3d;
  transition: border-color 0.2s ease;
}

.page_select__MPBgi:focus,
.page_field___uHMi input:focus {
  outline: none;
  border-color: #1f7ae0;
}

.page_checkbox__dY2AP {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 0;
}

.page_checkbox__dY2AP input[type="checkbox"] {
  width: 20px;
  height: 20px;
  cursor: pointer;
}

.page_checkbox__dY2AP label {
  font-size: 14px;
  color: #465268;
  cursor: pointer;
  margin: 0;
}

@media (max-width: 720px) {
  .page_layoutGrid__tcFOu {
    grid-template-columns: minmax(0, 1fr);
    grid-auto-rows: auto;
    gap: 16px;
    padding: clamp(12px, 5vw, 32px);
  }

  .page_columnLeft__yEV__,
  .page_columnCenter__FFkXY,
  .page_columnRight__gev7A {
    align-items: center;
    height: 100%;  /* Ensure full height on mobile too */
  }

  .page_columnLeft__yEV__ {
    gap: 18px;
    justify-content: space-between;  /* Keep space-between on mobile */
  }

  .page_columnRight__gev7A {
    gap: 18px;
  }

  .page_statusPanel__VO2IB {
    max-width: 320px;
  }

  .page_notificationBar__Zgk_t {
    width: 100%;
  }
  
  .page_settingsPanel__bAs_s {
    max-width: 95%;
    max-height: 85vh;
  }
  
  .page_panelHeader__uwSS3,
  .page_panelBody__TACQQ {
    padding: 20px;
  }
}

/* ============================================
   Logs area (scrollable with fixed height)
   ============================================ */
.page_logArea__dwk9B {
  max-height: 200px;
  min-height: 120px;
  overflow-y: auto;
  background: #f8f9fa;
  border: 1px solid #e1e4e8;
  border-radius: 8px;
  padding: 12px;
  font-family: 'SF Mono', 'Consolas', 'Monaco', monospace;
  font-size: 0.85em;
  line-height: 1.5;
  color: #555;
  scrollbar-width: thin;
  scrollbar-color: #cbd5e0 #f8f9fa;
}

.page_logArea__dwk9B::-webkit-scrollbar {
  width: 8px;
}

.page_logArea__dwk9B::-webkit-scrollbar-track {
  background: #f8f9fa;
  border-radius: 4px;
}

.page_logArea__dwk9B::-webkit-scrollbar-thumb {
  background: #cbd5e0;
  border-radius: 4px;
}

.page_logArea__dwk9B::-webkit-scrollbar-thumb:hover {
  background: #a0aec0;
}

/* ============================================
   Improved toggle/checkbox rows
   ============================================ */
.page_toggleRow__vuXQN {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 16px;
  background: #f8f9fa;
  border: 1px solid #e1e4e8;
  border-radius: 10px;
  cursor: pointer;
  transition: background-color 0.2s ease, border-color 0.2s ease;
  margin-bottom: 10px;
}

.page_toggleRow__vuXQN:hover {
  background: #edf2f7;
  border-color: #cbd5e0;
}

.page_toggleRow__vuXQN span {
  font-weight: 500;
  color: #2d3748;
  font-size: 0.95rem;
}

.page_toggleRow__vuXQN input[type="checkbox"] {
  -moz-appearance: none;
       appearance: none;
  -webkit-appearance: none;
  width: 48px;
  height: 26px;
  background: #cbd5e0;
  border-radius: 13px;
  position: relative;
  cursor: pointer;
  transition: background-color 0.3s ease;
  outline: none;
  flex-shrink: 0;
}

.page_toggleRow__vuXQN input[type="checkbox"]:checked {
  background: #4299e1;
}

.page_toggleRow__vuXQN input[type="checkbox"]::before {
  content: '';
  position: absolute;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: white;
  top: 3px;
  left: 3px;
  transition: transform 0.3s ease;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
}

.page_toggleRow__vuXQN input[type="checkbox"]:checked::before {
  transform: translateX(22px);
}

.page_toggleRow__vuXQN input[type="checkbox"]:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

/* ============================================
   Modern Radio Button Group (Source Mode)
   ============================================ */
.page_radioGroup__ABoy7 {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.page_radioOption__NdTBo {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px;
  background: #f8f9fa;
  border: 2px solid #e1e4e8;
  border-radius: 12px;
  cursor: pointer;
  transition: all 0.2s ease;
  position: relative;
}

.page_radioOption__NdTBo:hover {
  background: #edf2f7;
  border-color: #cbd5e0;
}

.page_radioOption__NdTBo.page_radioActive__fgy3o {
  background: linear-gradient(135deg, #ebf8ff 0%, #e6f6ff 100%);
  border-color: #4299e1;
  box-shadow: 0 2px 8px rgba(66, 153, 225, 0.15);
}

.page_radioOption__NdTBo input[type="radio"] {
  -moz-appearance: none;
       appearance: none;
  -webkit-appearance: none;
  width: 20px;
  height: 20px;
  border: 2px solid #cbd5e0;
  border-radius: 50%;
  position: relative;
  cursor: pointer;
  transition: all 0.2s ease;
  flex-shrink: 0;
}

.page_radioOption__NdTBo input[type="radio"]:checked {
  border-color: #4299e1;
  background: #4299e1;
}

.page_radioOption__NdTBo input[type="radio"]::before {
  content: '';
  position: absolute;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: white;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%) scale(0);
  transition: transform 0.2s ease;
}

.page_radioOption__NdTBo input[type="radio"]:checked::before {
  transform: translate(-50%, -50%) scale(1);
}

.page_radioLabel__5qlVc {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.page_radioTitle__dup2S {
  font-weight: 600;
  color: #2d3748;
  font-size: 0.95rem;
}

.page_radioDescription__XdyGR {
  font-size: 0.82rem;
  color: #718096;
}

/* ============================================
   Modern Toggle Switch (iOS-style)
   ============================================ */
.page_toggleSwitch__YUs6d {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 16px;
  background: #f8f9fa;
  border: 1px solid #e1e4e8;
  border-radius: 12px;
  cursor: pointer;
  transition: all 0.2s ease;
  margin-bottom: 8px;
}

.page_toggleSwitch__YUs6d:hover {
  background: #edf2f7;
  border-color: #cbd5e0;
}

.page_toggleSwitch__YUs6d.page_toggleActive__3YXY_ {
  background: linear-gradient(135deg, #ebf8ff 0%, #e6f6ff 100%);
  border-color: #4299e1;
}

.page_toggleSwitchLabel__SSm9s {
  display: flex;
  flex-direction: column;
  gap: 2px;
  flex: 1 1;
}

.page_toggleSwitchTitle__HfiGq {
  font-weight: 600;
  color: #2d3748;
  font-size: 0.95rem;
}

.page_toggleSwitchDescription__bIjOW {
  font-size: 0.82rem;
  color: #718096;
}

.page_toggleSwitchInput__tXyrA {
  -moz-appearance: none;
       appearance: none;
  -webkit-appearance: none;
  width: 52px;
  height: 28px;
  background: #cbd5e0;
  border-radius: 14px;
  position: relative;
  cursor: pointer;
  transition: background-color 0.3s ease;
  outline: none;
  flex-shrink: 0;
  margin-left: 12px;
}

.page_toggleSwitchInput__tXyrA:checked {
  background: linear-gradient(135deg, #4299e1 0%, #3182ce 100%);
}

.page_toggleSwitchInput__tXyrA::before {
  content: '';
  position: absolute;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: white;
  top: 3px;
  left: 3px;
  transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
}

.page_toggleSwitchInput__tXyrA:checked::before {
  transform: translateX(24px);
}

.page_toggleSwitchInput__tXyrA:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

/* ============================================
   Field Group (for grouping related fields)
   ============================================ */
.page_fieldGroup__v7Z9t {
  background: #f0f4f8;
  border-radius: 12px;
  padding: 16px;
  margin-bottom: 16px;
}

.page_subSectionTitle__oZaLy {
  font-size: 0.9rem;
  font-weight: 600;
  color: #4a5568;
  margin: 0 0 12px 0;
  padding-bottom: 8px;
  border-bottom: 1px solid #e2e8f0;
}

/* Compact field for nested options */
.page_fieldCompact__FfI3U {
  margin-bottom: 8px;
}

.page_fieldCompact__FfI3U:last-child {
  margin-bottom: 0;
}

/* ============================================
   Improved slider styling
   ============================================ */
.page_slider__ByN4U {
  -webkit-appearance: none;
  -moz-appearance: none;
       appearance: none;
  width: 100%;
  height: 6px;
  border-radius: 3px;
  background: linear-gradient(to right, #4299e1 0%, #4299e1 var(--value, 50%), #e2e8f0 var(--value, 50%), #e2e8f0 100%);
  outline: none;
  transition: background 0.2s ease;
  cursor: pointer;
}

.page_slider__ByN4U::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: white;
  border: 2px solid #4299e1;
  cursor: pointer;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
  -webkit-transition: transform 0.2s ease, box-shadow 0.2s ease;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.page_slider__ByN4U::-webkit-slider-thumb:hover {
  transform: scale(1.1);
  box-shadow: 0 3px 8px rgba(0, 0, 0, 0.25);
}

.page_slider__ByN4U::-webkit-slider-thumb:active {
  transform: scale(1.05);
}

.page_slider__ByN4U::-moz-range-thumb {
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: white;
  border: 2px solid #4299e1;
  cursor: pointer;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
  -moz-transition: transform 0.2s ease, box-shadow 0.2s ease;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.page_slider__ByN4U::-moz-range-thumb:hover {
  transform: scale(1.1);
  box-shadow: 0 3px 8px rgba(0, 0, 0, 0.25);
}

.page_slider__ByN4U::-moz-range-thumb:active {
  transform: scale(1.05);
}

/* Helper text under select/input */
.page_helperText__nBAAm {
  display: block;
  margin-top: 6px;
  font-size: 0.82em;
  color: #718096;
  line-height: 1.4;
}

/* Phone tilt animation container */
.page_phoneTiltContainer__iO9g8 {
  position: absolute;
  bottom: 140px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 14;
}

/*!***********************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[7].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[7].use[3]!./src/components/ParallaxMeter.module.css ***!
  \***********************************************************************************************************************************************************************************************************************************************************************************/
.ParallaxMeter_container__dZeBM {
  position: absolute;
  bottom: 100px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 8px 16px;
  background: rgba(0, 0, 0, 0.4);
  border-radius: 20px;
  -webkit-backdrop-filter: blur(8px);
          backdrop-filter: blur(8px);
  z-index: 15;
  transition: all 0.2s ease;
}

.ParallaxMeter_container__dZeBM[data-ready="true"] {
  background: rgba(80, 255, 120, 0.15);
}

.ParallaxMeter_gatesRow__06_nz {
  display: flex;
  gap: 6px;
}

.ParallaxMeter_dot__UCeuD {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.2);
  transition: all 0.15s ease;
}

.ParallaxMeter_dotOK__R_sm1 {
  background: rgba(80, 255, 120, 0.9);
  box-shadow: 0 0 8px rgba(80, 255, 120, 0.5);
}

.ParallaxMeter_progressBar__c4GLN {
  width: 60px;
  height: 3px;
  background: rgba(255, 255, 255, 0.1);
  border-radius: 2px;
  overflow: hidden;
}

.ParallaxMeter_progressFill__QjMzZ {
  height: 100%;
  background: rgba(255, 255, 255, 0.4);
  transition: width 0.1s ease;
}

.ParallaxMeter_progressFill__QjMzZ[data-ready="true"] {
  background: rgba(80, 255, 120, 0.8);
}

.ParallaxMeter_statusText___rB3i {
  font-size: 11px;
  color: rgba(255, 255, 255, 0.6);
  font-family: 'SF Mono', 'Monaco', 'Inconsolata', monospace;
  min-width: 44px;
}

/*!*********************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[7].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[7].use[3]!./src/components/CoverageMap.module.css ***!
  \*********************************************************************************************************************************************************************************************************************************************************************************/
.CoverageMap_container__HbYBs {
  /* Positioned by parent flex layout - no absolute positioning */
  margin-top: auto;  /* Push to bottom of flex column */
  background: rgba(255, 255, 255, 0.92);
  border: 1px solid rgba(0, 0, 0, 0.1);
  border-radius: 8px;
  padding: 12px;
  min-width: 180px;
  -webkit-backdrop-filter: blur(12px);
          backdrop-filter: blur(12px);
  z-index: 15;
}

.CoverageMap_header__dMqmO {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 10px;
  padding-bottom: 8px;
  border-bottom: 1px solid rgba(0, 0, 0, 0.08);
}

.CoverageMap_title__PvxrB {
  font-size: 12px;
  font-weight: 500;
  color: rgba(0, 0, 0, 0.5);
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

.CoverageMap_progress__OT9KC {
  font-size: 11px;
  color: rgba(0, 0, 0, 0.9);
  font-family: 'SF Mono', 'Monaco', 'Inconsolata', monospace;
}

.CoverageMap_grid__rcanY {
  display: grid;
  /* grid-template-columns set inline based on numWaypoints */
  grid-gap: 3px;
  gap: 3px;
}

.CoverageMap_cornerCell__V_oIk {
  width: 20px;
}

.CoverageMap_headerCell__gELvr {
  font-size: 9px;
  color: rgba(0, 0, 0, 0.5);
  text-align: center;
  padding: 2px;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

.CoverageMap_rowLabel__iM48L {
  font-size: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  padding-right: 4px;
  color: rgba(0, 0, 0, 0.6);
}

.CoverageMap_cell__r_v7i {
  width: 28px;
  height: 28px;
  border-radius: 4px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  transition: all 0.15s ease;
}

.CoverageMap_cellEmpty__adhpn {
  background: rgba(0, 0, 0, 0.02);
  color: rgba(0, 0, 0, 0.25);
  border: 1px solid rgba(0, 0, 0, 0.08);
}

.CoverageMap_cellFilled__pMGhs {
  background: rgba(0, 0, 0, 0.85);
  color: rgba(255, 255, 255, 0.95);
  border: 1px solid rgba(0, 0, 0, 0.9);
}

.CoverageMap_cellSkipped__OQKIC {
  background: rgba(255, 180, 0, 0.15);
  color: rgba(180, 140, 0, 0.9);
  border: 1px solid rgba(255, 180, 0, 0.4);
}

.CoverageMap_cellCurrent__6L2EW {
  background: rgba(0, 0, 0, 0.15);
  color: rgba(0, 0, 0, 0.9);
  border: 1px solid rgba(0, 0, 0, 0.4);
  animation: CoverageMap_currentPulse__qdAGR 1.2s ease-in-out infinite;
}

@keyframes CoverageMap_currentPulse__qdAGR {
  0%, 100% { opacity: 0.7; }
  50% { opacity: 1; }
}

.CoverageMap_targetInfo__Bgb_k {
  margin-top: 10px;
  padding-top: 8px;
  border-top: 1px solid rgba(0, 0, 0, 0.08);
  font-size: 11px;
  color: rgba(0, 0, 0, 0.6);
  text-align: center;
}

.CoverageMap_targetAngles__3ykJb {
  display: block;
  font-size: 10px;
  color: rgba(0, 0, 0, 0.5);
  margin-top: 2px;
  font-family: monospace;
}

/* Proposed waypoint styles (lighter, indicating optional) */
.CoverageMap_headerProposed__cJ_92 {
  color: rgba(0, 0, 0, 0.35);
  font-style: italic;
}

.CoverageMap_cellProposed__KgCJh {
  opacity: 0.5;
  border-style: dashed !important;
}

.CoverageMap_proposedHint__I_P3o {
  margin-top: 8px;
  font-size: 10px;
  color: rgba(0, 0, 0, 0.45);
  text-align: center;
  font-style: italic;
}

/*!****************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[7].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[7].use[3]!./src/components/PhoneTiltAnimation.module.css ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************/
/**
 * PhoneTiltAnimation.module.css
 * 
 * Clean, minimal animations for landscape phone tilt/strafe illustration.
 * Smooth, deliberate movements with anticipation for natural feel.
 */

.PhoneTiltAnimation_container__Tp5Y7 {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  padding: 12px;
}

.PhoneTiltAnimation_container__Tp5Y7[data-direction="none"] {
  opacity: 0.2;
}

.PhoneTiltAnimation_phone__hkA9A {
  width: 320px;
  height: 188px;
  transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);
  transform-origin: center center;
}

/* Tilt UP animation - descend slightly, then tilt up (look at ceiling) */
.PhoneTiltAnimation_phone__hkA9A[data-direction="up"] {
  animation: PhoneTiltAnimation_tiltUp__3soTy 4s ease-in-out infinite;
}

/* Tilt DOWN animation - rise slightly, then tilt down (look at floor) */
.PhoneTiltAnimation_phone__hkA9A[data-direction="down"] {
  animation: PhoneTiltAnimation_tiltDown__kJqnj 4s ease-in-out infinite;
}

/* Strafe LEFT animation - smooth lateral movement (once, not looping aggressively) */
.PhoneTiltAnimation_phone__hkA9A[data-direction="left"] {
  animation: PhoneTiltAnimation_strafeLeft__o8JpE 3s ease-in-out infinite;
}

/* Strafe RIGHT animation - smooth lateral movement */
.PhoneTiltAnimation_phone__hkA9A[data-direction="right"] {
  animation: PhoneTiltAnimation_strafeRight__QPsFX 3s ease-in-out infinite;
}

.PhoneTiltAnimation_phone__hkA9A[data-direction="ready"] {
  animation: none;
}

.PhoneTiltAnimation_phone__hkA9A[data-direction="none"] {
  animation: none;
}

/* Tilt UP: phone tilts back to look UP (ceiling) - positive rotateX */
@keyframes PhoneTiltAnimation_tiltUp__3soTy {
  0% {
    transform: perspective(400px) translateY(0) rotateX(0deg);
  }
  20% {
    transform: perspective(400px) translateY(-8px) rotateX(0deg);
  }
  50% {
    transform: perspective(400px) translateY(2px) rotateX(18deg);
  }
  80% {
    transform: perspective(400px) translateY(-2px) rotateX(5deg);
  }
  100% {
    transform: perspective(400px) translateY(0) rotateX(0deg);
  }
}

/* Tilt DOWN: phone tilts forward to look DOWN (floor) - negative rotateX */
@keyframes PhoneTiltAnimation_tiltDown__kJqnj {
  0% {
    transform: perspective(400px) translateY(0) rotateX(0deg);
  }
  20% {
    transform: perspective(400px) translateY(8px) rotateX(0deg);
  }
  50% {
    transform: perspective(400px) translateY(-2px) rotateX(-18deg);
  }
  80% {
    transform: perspective(400px) translateY(2px) rotateX(-5deg);
  }
  100% {
    transform: perspective(400px) translateY(0) rotateX(0deg);
  }
}

/* Strafe LEFT: smooth lateral movement to indicate moving left */
@keyframes PhoneTiltAnimation_strafeLeft__o8JpE {
  0% {
    transform: translateX(0);
  }
  20% {
    transform: translateX(5px);
  }
  50% {
    transform: translateX(-20px);
  }
  80% {
    transform: translateX(-5px);
  }
  100% {
    transform: translateX(0);
  }
}

/* Strafe RIGHT: smooth lateral movement to indicate moving right */
@keyframes PhoneTiltAnimation_strafeRight__QPsFX {
  0% {
    transform: translateX(0);
  }
  20% {
    transform: translateX(-5px);
  }
  50% {
    transform: translateX(20px);
  }
  80% {
    transform: translateX(5px);
  }
  100% {
    transform: translateX(0);
  }
}

.PhoneTiltAnimation_phoneBody__xD7gv {
  fill: transparent;
  stroke: rgba(255, 255, 255, 0.5);
  stroke-width: 1.5;
}

.PhoneTiltAnimation_screen__IDXF7 {
  fill: rgba(255, 255, 255, 0.03);
}

.PhoneTiltAnimation_camera__hO0EF {
  fill: rgba(255, 255, 255, 0.25);
}

.PhoneTiltAnimation_arrowGroup__efMwe {
  animation: PhoneTiltAnimation_arrowPulse__nkTOb 1.5s ease-in-out infinite;
}

@keyframes PhoneTiltAnimation_arrowPulse__nkTOb {
  0%, 100% { opacity: 0.4; }
  50% { opacity: 0.95; }
}

.PhoneTiltAnimation_arrow__yWzrf {
  fill: rgba(255, 255, 255, 0.7);
}

.PhoneTiltAnimation_checkGroup___dDXp {
  animation: PhoneTiltAnimation_checkPulse__eYn_a 1s ease-in-out infinite;
}

@keyframes PhoneTiltAnimation_checkPulse__eYn_a {
  0%, 100% { opacity: 0.6; }
  50% { opacity: 1; }
}

.PhoneTiltAnimation_check__Ad0eC {
  fill: none;
  stroke: rgba(80, 255, 120, 0.9);
  stroke-width: 3;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.PhoneTiltAnimation_label__6xCeV {
  font-size: 18px;
  color: rgba(255, 255, 255, 0.5);
  font-weight: 300;
}

/*!****************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[7].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[7].use[3]!./src/components/OpticalFlowOverlay.module.css ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************/
.OpticalFlowOverlay_overlay__If90b {
  position: absolute;
  top: 0;
  left: 0;
  pointer-events: none;
  z-index: 100;
}

/*!***********************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[7].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[7].use[3]!./src/components/RecordingView.module.css ***!
  \***********************************************************************************************************************************************************************************************************************************************************************************/
/* RecordingView.module.css */

.RecordingView_container__V86us {
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background: #000000;
  z-index: 10000;
  display: flex;
  flex-direction: column;
}

.RecordingView_video__RxPnF {
  flex: 1 1;
  width: 100%;
  height: auto;
  object-fit: contain;
}

.RecordingView_controls__T_Ydw {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  background: linear-gradient(to top, rgba(0, 0, 0, 0.9), transparent);
  padding: 2rem 1rem 1rem;
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.RecordingView_stats__fQ6dK {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  grid-gap: 0.5rem;
  gap: 0.5rem;
  margin-bottom: 1rem;
}

.RecordingView_statItem__XN53K {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}

.RecordingView_label__Yanlo {
  font-size: 0.75rem;
  color: #888;
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.RecordingView_value__jE5Hm {
  font-size: 1rem;
  font-weight: 600;
  color: #fff;
}

.RecordingView_error__fiux2 {
  grid-column: 1 / -1;
  padding: 0.75rem;
  background: rgba(255, 0, 0, 0.2);
  border: 1px solid rgba(255, 0, 0, 0.5);
  border-radius: 4px;
  color: #ff6b6b;
  font-size: 0.875rem;
}

.RecordingView_buttons__U5_9Y {
  display: flex;
  gap: 0.5rem;
  flex-wrap: wrap;
}

.RecordingView_button__kqsJ5 {
  flex: 1 1;
  min-width: 150px;
  padding: 0.75rem 1rem;
  background: rgba(255, 255, 255, 0.1);
  border: 1px solid rgba(255, 255, 255, 0.2);
  border-radius: 4px;
  color: #fff;
  font-size: 0.875rem;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.2s;
}

.RecordingView_button__kqsJ5:hover {
  background: rgba(255, 255, 255, 0.2);
  border-color: rgba(255, 255, 255, 0.4);
}

.RecordingView_button__kqsJ5:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

.RecordingView_button__kqsJ5.RecordingView_record__4Ef8Y {
  background: rgba(255, 0, 0, 0.2);
  border-color: rgba(255, 0, 0, 0.5);
  color: #ff6b6b;
}

.RecordingView_button__kqsJ5.RecordingView_record__4Ef8Y:hover:not(:disabled) {
  background: rgba(255, 0, 0, 0.3);
  border-color: rgba(255, 0, 0, 0.7);
}

.RecordingView_button__kqsJ5.RecordingView_stop__l58Fp {
  background: rgba(0, 255, 0, 0.2);
  border-color: rgba(0, 255, 0, 0.5);
  color: #6bff6b;
}

.RecordingView_button__kqsJ5.RecordingView_stop__l58Fp:hover {
  background: rgba(0, 255, 0, 0.3);
  border-color: rgba(0, 255, 0, 0.7);
}

/*!****************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[7].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[7].use[3]!./src/components/capture/CameraView.module.css ***!
  \****************************************************************************************************************************************************************************************************************************************************************************************/
.CameraView_container__Hl4l3 {
  position: relative;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #000;
  overflow: hidden;
}

.CameraView_videoContainer__Ib1cf {
  position: relative;
  background: #111;
  border-radius: 8px;
  overflow: hidden;
}

.CameraView_placeholder__E1myH {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);
  color: #666;
}

.CameraView_placeholderIcon__6FoSq {
  font-size: 48px;
  margin-bottom: 12px;
  opacity: 0.5;
}

.CameraView_placeholderText__KvO0a {
  font-size: 14px;
  text-transform: uppercase;
  letter-spacing: 1px;
}

.CameraView_overlay__XgRA2 {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  pointer-events: none;
}

.CameraView_overlay__XgRA2 > * {
  pointer-events: auto;
}

/*!********************************************************************************************************************************************************************************************************************************************************************************************!*\
  !*** css ./node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[7].use[2]!./node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[7].use[3]!./src/components/DirectionChoiceOverlay.module.css ***!
  \********************************************************************************************************************************************************************************************************************************************************************************************/
/**
 * DirectionChoiceOverlay.module.css
 * 
 * Styles for the direction selection overlay.
 */

.DirectionChoiceOverlay_overlay__gE1W0 {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.85);
  -webkit-backdrop-filter: blur(8px);
          backdrop-filter: blur(8px);
  animation: DirectionChoiceOverlay_fadeIn__75iOW 0.3s ease-out;
}

@keyframes DirectionChoiceOverlay_fadeIn__75iOW {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

.DirectionChoiceOverlay_content__I7FjB {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2rem;
  padding: 2rem;
  max-width: 90vw;
  text-align: center;
}

.DirectionChoiceOverlay_header__U0Xdt {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.DirectionChoiceOverlay_title__X4AHl {
  margin: 0;
  font-size: 1.75rem;
  font-weight: 600;
  color: #ffffff;
}

.DirectionChoiceOverlay_subtitle__DP8zy {
  margin: 0;
  font-size: 1.1rem;
  color: #a0a0a0;
}

.DirectionChoiceOverlay_subtitle__DP8zy strong {
  color: #60a5fa;
}

.DirectionChoiceOverlay_hint__jRsw7 {
  margin: 0.5rem 0 0;
  font-size: 0.95rem;
  color: #888;
}

/* Direction buttons */
.DirectionChoiceOverlay_buttons__oEVSg {
  display: flex;
  gap: 2rem;
}

.DirectionChoiceOverlay_directionButton__OOZjT {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.75rem;
  width: 140px;
  height: 140px;
  border: 2px solid #444;
  border-radius: 16px;
  background: linear-gradient(145deg, #2a2a2a, #1a1a1a);
  color: #fff;
  cursor: pointer;
  transition: all 0.2s ease;
}

.DirectionChoiceOverlay_directionButton__OOZjT:hover {
  border-color: #60a5fa;
  background: linear-gradient(145deg, #333, #222);
  transform: scale(1.05);
}

.DirectionChoiceOverlay_directionButton__OOZjT:active {
  transform: scale(0.98);
}

.DirectionChoiceOverlay_leftButton__yyiIR:hover {
  border-color: #f97316;
  box-shadow: 0 0 20px rgba(249, 115, 22, 0.3);
}

.DirectionChoiceOverlay_rightButton__xLX6m:hover {
  border-color: #22c55e;
  box-shadow: 0 0 20px rgba(34, 197, 94, 0.3);
}

.DirectionChoiceOverlay_arrow__NbjYn {
  font-size: 3rem;
  font-weight: 300;
  line-height: 1;
}

.DirectionChoiceOverlay_label__W8HnW {
  font-size: 1rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

/* Countdown state */
.DirectionChoiceOverlay_countdown__dWHPI {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1rem;
  animation: DirectionChoiceOverlay_scaleIn__d3bwM 0.3s ease-out;
}

@keyframes DirectionChoiceOverlay_scaleIn__d3bwM {
  from {
    opacity: 0;
    transform: scale(0.8);
  }
  to {
    opacity: 1;
    transform: scale(1);
  }
}

.DirectionChoiceOverlay_selectedDirection__ubCuZ {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  padding: 1rem 2rem;
  background: rgba(96, 165, 250, 0.15);
  border: 1px solid rgba(96, 165, 250, 0.3);
  border-radius: 12px;
}

.DirectionChoiceOverlay_selectedArrow__D2Pog {
  font-size: 2rem;
  color: #60a5fa;
}

.DirectionChoiceOverlay_selectedLabel__EA3uj {
  font-size: 1.25rem;
  font-weight: 500;
  color: #60a5fa;
}

.DirectionChoiceOverlay_countdownNumber__21lU8 {
  font-size: 4rem;
  font-weight: 700;
  color: #60a5fa;
  line-height: 1;
  animation: DirectionChoiceOverlay_pulse__skMiM 1s ease-in-out infinite;
}

@keyframes DirectionChoiceOverlay_pulse__skMiM {
  0%, 100% {
    transform: scale(1);
    opacity: 1;
  }
  50% {
    transform: scale(1.1);
    opacity: 0.8;
  }
}

.DirectionChoiceOverlay_countdownText__LFRR_ {
  margin: 0;
  font-size: 1rem;
  color: #888;
}

/* Cancel button */
.DirectionChoiceOverlay_cancelButton__PDVPk {
  margin-top: 1rem;
  padding: 0.5rem 1.5rem;
  border: 1px solid #555;
  border-radius: 8px;
  background: transparent;
  color: #888;
  font-size: 0.9rem;
  cursor: pointer;
  transition: all 0.2s ease;
}

.DirectionChoiceOverlay_cancelButton__PDVPk:hover {
  border-color: #888;
  color: #ccc;
}

