html,
body {
  width: var(--tv-viewport-width, 100vw);
  min-width: 0;
  max-width: var(--tv-viewport-width, 100vw);
  min-height: 100%;
  overflow-x: hidden;
}

@supports (width: 100dvw) {
  html,
  body {
    width: var(--tv-viewport-width, 100dvw);
    max-width: var(--tv-viewport-width, 100dvw);
  }
}

body {
  margin: 0;
}

.app-shell {
  width: var(--tv-viewport-width, 100vw) !important;
  max-width: var(--tv-viewport-width, 100vw) !important;
  min-width: 0 !important;
  min-height: 100svh;
  margin: 0 !important;
  padding-top: max(10px, env(safe-area-inset-top)) !important;
  padding-right: max(3px, env(safe-area-inset-right)) !important;
  padding-bottom: calc(84px + env(safe-area-inset-bottom)) !important;
  padding-left: max(3px, env(safe-area-inset-left)) !important;
}

@supports (width: 100dvw) {
  .app-shell {
    width: var(--tv-viewport-width, 100dvw) !important;
    max-width: var(--tv-viewport-width, 100dvw) !important;
  }
}

@supports (min-height: 100dvh) {
  .app-shell {
    min-height: 100dvh;
  }
}

.mobile-screens,
.screen,
.screen.is-active,
.time-panel,
.pulse-panel,
.panel,
.market-chart-card,
.home-chart-card,
.decision-chart-grid,
.chart-grid,
.activity-list,
.review-panel,
.settings-panel {
  width: 100% !important;
  max-width: none !important;
}

.screen.is-active {
  min-width: 0;
}

.pulse-panel,
.panel {
  padding: clamp(8px, 1.2vw, 16px) !important;
}

.home-chart-card,
.market-chart-card {
  padding: clamp(7px, 1vw, 10px) !important;
}

.decision-chart-snapshots,
.home-mini-chart,
.mini-chart-stage,
.fallback-chart-frame {
  min-width: 0;
}

.bottom-nav {
  left: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  width: var(--tv-viewport-width, 100vw) !important;
  max-width: none !important;
  margin: 0 !important;
  transform: none !important;
  border-right: 0 !important;
  border-bottom: 0 !important;
  border-left: 0 !important;
  border-radius: 12px 12px 0 0 !important;
  padding-right: max(8px, env(safe-area-inset-right)) !important;
  padding-bottom: max(6px, env(safe-area-inset-bottom)) !important;
  padding-left: max(8px, env(safe-area-inset-left)) !important;
}

@supports (width: 100dvw) {
  .bottom-nav {
    width: var(--tv-viewport-width, 100dvw) !important;
  }
}

.section-title-row,
.market-chart-head,
.home-chart-head,
.review-decision-card,
.opportunity-card {
  min-width: 0;
}

.section-title-row > *,
.market-chart-head > *,
.home-chart-head > *,
.review-decision-card > *,
.opportunity-card > * {
  min-width: 0;
}

.section-title-row h1,
.section-title-row h2,
.market-chart-head h3,
.home-chart-head h3,
.quiet-summary,
.home-chart-status,
.review-decision-card small,
.opportunity-copy small {
  overflow-wrap: anywhere;
}

.next-candle-pill,
.market-chart-head span,
.home-chart-head span,
.grade-pill,
.meta-chip {
  max-width: 100%;
}

.next-candle-pill {
  white-space: normal;
  text-align: center;
}

.home-mini-chart,
.mini-chart-stage {
  min-height: clamp(300px, 66vw, 720px) !important;
}

.chart-stage {
  height: clamp(420px, 72vw, 820px) !important;
  min-height: clamp(420px, 72vw, 820px) !important;
}

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

.tv-level-editor-overlay {
  display: none !important;
}

.tv-level-source-hidden {
  opacity: 1 !important;
  pointer-events: auto !important;
}

.tv-trade-tools-overlay {
  z-index: 3;
}

.tv-trade-tool-line {
  border-top-width: 1.35px !important;
  right: 10.8% !important;
  opacity: .88 !important;
}

.tv-trade-tool-line.is-support,
.tv-trade-tool-line.is-resistance {
  border-top-style: dashed !important;
}

.tv-trade-tool-label {
  min-width: 54px !important;
  max-width: 24% !important;
  height: 22px !important;
  padding: 0 6px !important;
  border-radius: 5px !important;
  font: 900 clamp(.62rem, 1.8vw, .78rem)/22px system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif !important;
  box-shadow: 0 4px 10px rgba(0, 0, 0, .18) !important;
}

.tv-trade-tool-label.is-dragging {
  box-shadow: 0 0 0 1.5px rgba(154, 98, 255, .75), 0 6px 14px rgba(0, 0, 0, .24) !important;
}

@media (min-width: 560px) {
  .app-shell {
    padding-right: max(5px, env(safe-area-inset-right)) !important;
    padding-left: max(5px, env(safe-area-inset-left)) !important;
  }

  .screen.is-active {
    gap: 10px !important;
  }

  .home-mini-chart,
  .mini-chart-stage {
    min-height: clamp(380px, 58vw, 780px) !important;
  }
}

@media (min-width: 720px) {
  .app-shell {
    padding-right: max(6px, env(safe-area-inset-right)) !important;
    padding-left: max(6px, env(safe-area-inset-left)) !important;
  }

  .home-mini-chart,
  .mini-chart-stage {
    min-height: clamp(430px, 54vw, 860px) !important;
  }

  .chart-stage {
    height: clamp(520px, 64vw, 900px) !important;
    min-height: clamp(520px, 64vw, 900px) !important;
  }
}

@media (max-width: 620px) {
  .tv-trade-tool-label {
    min-width: 48px !important;
    max-width: 30% !important;
    height: 20px !important;
    padding-inline: 5px !important;
    line-height: 20px !important;
  }

  .tv-trade-tool-line {
    border-top-width: 1.2px !important;
  }
}

@media (max-width: 380px) {
  .app-shell {
    padding-right: max(2px, env(safe-area-inset-right)) !important;
    padding-left: max(2px, env(safe-area-inset-left)) !important;
  }

  .section-title-row,
  .market-chart-head,
  .home-chart-head,
  .time-panel,
  .compact-detail-grid {
    grid-template-columns: 1fr !important;
  }

  .time-cell + .time-cell {
    border-left: 0 !important;
    border-top: 1px solid var(--line) !important;
  }

  .market-chart-head span,
  .home-chart-head span {
    max-width: 100% !important;
    text-align: left !important;
  }
}

@media (orientation: landscape) {
  .app-shell {
    padding-top: max(4px, env(safe-area-inset-top)) !important;
    padding-bottom: calc(70px + env(safe-area-inset-bottom)) !important;
  }

  .app-topbar,
  .time-panel {
    display: none !important;
  }

  .screen.is-active {
    gap: 6px !important;
  }

  .pulse-panel,
  .panel {
    padding: clamp(6px, 0.8vw, 10px) !important;
  }

  .decision-chart-snapshots {
    margin-top: 8px;
    padding-top: 8px;
  }

  .home-mini-chart,
  .mini-chart-stage {
    min-height: max(300px, calc(100svh - 188px)) !important;
  }
}

@media (orientation: landscape) and (max-height: 560px) {
  .opportunities-panel > .section-title-row,
  .opportunities-panel > .quiet-summary,
  .compact-title-row,
  .compact-summary {
    display: none !important;
  }

  .decision-chart-snapshots {
    margin-top: 0;
    padding-top: 0;
    border-top: 0;
  }

  .home-mini-chart,
  .mini-chart-stage {
    min-height: max(260px, calc(100svh - 142px)) !important;
  }
}

@media (min-width: 900px) and (min-height: 700px) and (hover: hover) and (pointer: fine) {
  html,
  body {
    width: 100% !important;
    max-width: none !important;
    height: 100%;
    min-height: 100%;
    overflow: hidden;
    background: #0d0f12;
  }

  body {
    display: block;
  }

  .tv-desktop-app-canvas {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100vw;
    height: 100vh;
    min-height: 100vh;
    padding: var(--tv-desktop-canvas-padding);
    overflow: hidden;
    background:
      linear-gradient(180deg, #15191d 0%, #0d0f12 44%, #07090b 100%);
  }

  @supports (height: 100dvh) {
    .tv-desktop-app-canvas {
      height: 100dvh;
      min-height: 100dvh;
    }
  }

  .tv-device-frame {
    display: block;
    position: relative;
    width: min(
      calc(100vw - (var(--tv-desktop-canvas-padding) * 2)),
      590px,
      calc((100vh - (var(--tv-desktop-canvas-padding) * 2)) * var(--tv-device-frame-ratio))
    );
    min-width: 0;
    height: min(
      calc(100vh - (var(--tv-desktop-canvas-padding) * 2)),
      1224px,
      calc((100vw - (var(--tv-desktop-canvas-padding) * 2)) * var(--tv-device-frame-inverse-ratio))
    );
    max-height: 1224px;
    filter:
      drop-shadow(0 34px 82px rgba(0, 0, 0, 0.56))
      drop-shadow(0 5px 16px rgba(255, 255, 255, 0.04));
  }

  @supports (height: 100dvh) {
    .tv-device-frame {
      width: min(
        calc(100vw - (var(--tv-desktop-canvas-padding) * 2)),
        590px,
        calc((100dvh - (var(--tv-desktop-canvas-padding) * 2)) * var(--tv-device-frame-ratio))
      );
      height: min(
        calc(100dvh - (var(--tv-desktop-canvas-padding) * 2)),
        1224px,
        calc((100vw - (var(--tv-desktop-canvas-padding) * 2)) * var(--tv-device-frame-inverse-ratio))
      );
    }
  }

  .tv-device-frame__body {
    display: block;
    position: relative;
    isolation: isolate;
    width: 100%;
    height: 100%;
    padding: var(--tv-device-frame-padding);
    overflow: hidden;
    border: 1px solid rgba(255, 255, 255, 0.13);
    border-radius: var(--tv-device-frame-radius);
    background: #111113;
    box-shadow:
      inset 0 1px 1px rgba(255, 255, 255, 0.28),
      inset 1px 0 0 rgba(255, 255, 255, 0.13),
      inset -1px 0 0 rgba(255, 255, 255, 0.07),
      inset 0 -12px 22px rgba(0, 0, 0, 0.38),
      0 1px 0 rgba(255, 255, 255, 0.08);
  }

  .tv-device-frame__body::before {
    content: "";
    position: absolute;
    inset: 3px;
    z-index: 30;
    pointer-events: none;
    border: 1px solid rgba(255, 255, 255, 0.08);
    border-radius: calc(var(--tv-device-frame-radius) - 3px);
    box-shadow:
      inset 0 0 14px rgba(255, 255, 255, 0.06),
      inset 8px 0 16px rgba(255, 255, 255, 0.045),
      inset -8px 0 16px rgba(0, 0, 0, 0.36);
  }

  .tv-device-frame__body::after {
    content: "";
    position: absolute;
    inset: var(--tv-device-frame-padding);
    z-index: 20;
    pointer-events: none;
    border-radius: var(--tv-device-frame-inner-radius);
    box-shadow:
      inset 0 10px 14px rgba(0, 0, 0, 0.36),
      inset 0 0 0 1px rgba(0, 0, 0, 0.64),
      inset 0 0 0 2px rgba(255, 255, 255, 0.06),
      0 0 0 1px rgba(255, 255, 255, 0.07);
  }

  .tv-device-frame__speaker {
    display: block;
    position: absolute;
    top: 8px;
    left: 50%;
    z-index: 70;
    width: 70px;
    height: 4px;
    transform: translateX(-50%);
    border-radius: 999px;
    background: #111113;
    box-shadow:
      inset 0 1px 1px rgba(255, 255, 255, 0.12),
      0 1px 1px rgba(255, 255, 255, 0.08);
  }

  .tv-device-frame__glass {
    display: block;
    position: absolute;
    inset: var(--tv-device-frame-padding);
    z-index: 40;
    pointer-events: none;
    border-radius: var(--tv-device-frame-inner-radius);
    background: rgba(255, 255, 255, 0.035);
    mix-blend-mode: screen;
  }

  .tv-device-frame__bezel {
    display: block;
    position: absolute;
    inset: 0;
    z-index: 60;
    box-sizing: border-box;
    pointer-events: none;
    border: var(--tv-device-frame-padding) solid #08080a;
    border-radius: var(--tv-device-frame-radius);
    background: transparent;
  }

  .tv-device-frame__viewport {
    display: block;
    position: relative;
    z-index: 0;
    width: 100%;
    height: 100%;
    overflow: hidden;
    contain: paint;
    isolation: isolate;
    border-radius: var(--tv-device-frame-inner-radius);
    background: #080b0e;
    clip-path: inset(0 round var(--tv-device-frame-inner-radius));
  }

  .tv-mobile-viewport-shell {
    display: block;
    position: relative;
    isolation: isolate;
    width: 100%;
    min-width: 0;
    height: 100%;
    max-height: 100%;
    overflow: hidden;
    border: 1px solid rgba(255, 255, 255, 0.08);
    border-radius: var(--tv-device-frame-inner-radius);
    background: var(--bg);
    box-shadow:
      inset 0 0 0 1px rgba(0, 0, 0, 0.72),
      0 0 0 1px rgba(255, 255, 255, 0.04);
    transform: translateZ(0);
  }

  .app-shell {
    width: 100% !important;
    max-width: none !important;
    min-width: 0 !important;
    height: 100% !important;
    min-height: 100% !important;
    margin: 0 !important;
    overflow-x: hidden !important;
    overflow-y: auto !important;
    -webkit-overflow-scrolling: touch;
    padding-top: max(10px, env(safe-area-inset-top)) !important;
    padding-right: max(3px, env(safe-area-inset-right)) !important;
    padding-bottom: calc(84px + env(safe-area-inset-bottom)) !important;
    padding-left: max(3px, env(safe-area-inset-left)) !important;
  }

  .app-topbar,
  .topbar {
    display: grid !important;
  }

  .time-panel {
    display: grid !important;
  }

  .bottom-nav {
    position: fixed !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    width: 100% !important;
    max-width: none !important;
    margin: 0 !important;
    transform: none !important;
    border-right: 0 !important;
    border-bottom: 0 !important;
    border-left: 0 !important;
    border-radius: 12px 12px 0 0 !important;
    padding-right: max(8px, env(safe-area-inset-right)) !important;
    padding-bottom: max(6px, env(safe-area-inset-bottom)) !important;
    padding-left: max(8px, env(safe-area-inset-left)) !important;
  }

  .home-mini-chart,
  .mini-chart-stage {
    min-height: clamp(300px, 66vw, 720px) !important;
  }

  .chart-stage {
    height: clamp(420px, 72vw, 820px) !important;
    min-height: clamp(420px, 72vw, 820px) !important;
  }
}
