/* TechNova Lab Focus Mode
   Lightweight CSS-only full-screen workspace. No Fullscreen API. */

html.technova-lab-focus-open,
body.technova-lab-focus-open {
  overflow: hidden !important;
  overscroll-behavior: none;
}

[data-course-lab],
.interactive-lab {
  position: relative;
}

.lab-focus-button {
  appearance: none;
  border: 1px solid rgba(15, 45, 78, .18);
  background: rgba(255, 255, 255, .94);
  color: #12304e;
  border-radius: 12px;
  min-height: 38px;
  padding: 8px 12px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  font: inherit;
  font-size: 12px;
  font-weight: 850;
  line-height: 1;
  white-space: nowrap;
  cursor: pointer;
  box-shadow: 0 5px 16px rgba(23, 48, 77, .08);
  transition: transform .12s ease, border-color .12s ease, background .12s ease;
}

.lab-focus-button:hover {
  background: #fff;
  border-color: rgba(15, 45, 78, .34);
}

.lab-focus-button:active {
  transform: translateY(1px) scale(.98);
}

.lab-focus-button:focus-visible {
  outline: 3px solid rgba(27, 117, 255, .3);
  outline-offset: 2px;
}

.lab-focus-button .lab-focus-icon {
  font-size: 15px;
  line-height: 1;
}

/* Landing preview header placement */
.preview-live-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 9px;
  flex-wrap: wrap;
}

/* Lesson studio placement */
.v6-badges {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 7px;
  flex-wrap: wrap;
}

.interactive-lab .lab-focus-button {
  /* Course labs use a light surface (human-ui.css), so this must be high contrast. */
  background: #123f73;
  border-color: #123f73;
  color: #ffffff;
  box-shadow: 0 6px 16px rgba(18, 63, 115, .18);
  position: relative;
  z-index: 4;
}

.interactive-lab .lab-focus-button:hover {
  background: #0d315b;
  border-color: #0d315b;
}

/* The actual focus state */
[data-course-lab].technova-lab-focus,
.interactive-lab.technova-lab-focus {
  position: fixed !important;
  inset: 0 !important;
  z-index: 2147483000 !important;
  width: 100vw !important;
  max-width: none !important;
  height: 100vh !important;
  height: 100dvh !important;
  min-height: 100vh !important;
  min-height: 100dvh !important;
  max-height: none !important;
  margin: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  overflow: auto !important;
  overscroll-behavior: contain;
  box-sizing: border-box !important;
}

[data-course-lab].technova-lab-focus {
  padding: 0 !important;
  background: #eef8f7 !important;
}

.interactive-lab.technova-lab-focus {
  padding: 22px !important;
  background: #f7fafc !important;
}

/* Keep the landing lab header and footer useful in focus mode. */
[data-course-lab].technova-lab-focus .course-story-meta {
  position: sticky;
  top: 0;
  z-index: 10;
  background: rgba(247, 253, 252, .97);
  backdrop-filter: blur(10px);
}

[data-course-lab].technova-lab-focus .course-lab-footer {
  position: sticky;
  bottom: 0;
  z-index: 9;
  background: rgba(255, 255, 255, .97);
  backdrop-filter: blur(10px);
}

[data-course-lab].technova-lab-focus .course-lab-stage {
  width: 100% !important;
  max-width: none !important;
  min-height: calc(100dvh - 184px);
  box-sizing: border-box;
}

/* Widen common lab workspaces when focused. */
.technova-lab-focus .python-bench,
.technova-lab-focus .web-bench,
.technova-lab-focus .ai-bench,
.technova-lab-focus .sim-bench,
.technova-lab-focus .data-bench,
.technova-lab-focus .app-bench,
.technova-lab-focus .transfer-code-grid,
.technova-lab-focus .game-dev1-layout,
.technova-lab-focus .game-dev1-workspace,
.technova-lab-focus .game-dev1-shell,
.technova-lab-focus .tn-gd1,
.technova-lab-focus .tn-gd1-main {
  width: 100% !important;
  max-width: none !important;
}

/* Game Development I gets the extra horizontal room without changing its engine. */
.technova-lab-focus .tn-gd1-main,
.technova-lab-focus .tn-gd1.compact .tn-gd1-main {
  grid-template-columns: minmax(520px, 1.12fr) minmax(420px, .88fr) !important;
  min-height: calc(100dvh - 190px);
}

/* Code/output labs benefit from a wider split. */
.technova-lab-focus .python-bench,
.technova-lab-focus .web-bench {
  grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr) !important;
}

/* Canvases expand without changing their intrinsic coordinate system. */
.technova-lab-focus canvas,
.technova-lab-focus iframe {
  max-width: 100%;
}

/* The focus control stays reachable while scrolling a lesson lab. */
.interactive-lab.technova-lab-focus > .lab-heading {
  position: sticky;
  top: -22px;
  z-index: 20;
  margin: -22px -22px 16px;
  padding: 18px 22px 14px;
  background: rgba(255, 255, 255, .97);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid rgba(20, 58, 91, .12);
}

@media (max-width: 860px) {
  .v6-badges {
    display: flex !important;
    width: 100%;
    justify-content: flex-start;
    margin-top: 10px;
  }

  .lab-focus-button {
    min-height: 42px;
    padding-inline: 11px;
  }

  [data-course-lab].technova-lab-focus .course-lab-stage,
  .interactive-lab.technova-lab-focus {
    padding-left: 12px !important;
    padding-right: 12px !important;
  }

  .technova-lab-focus .python-bench,
  .technova-lab-focus .web-bench,
  .technova-lab-focus .ai-bench,
  .technova-lab-focus .sim-bench,
  .technova-lab-focus .data-bench,
  .technova-lab-focus .app-bench,
  .technova-lab-focus .transfer-code-grid,
  .technova-lab-focus .tn-gd1-main,
  .technova-lab-focus .tn-gd1.compact .tn-gd1-main {
    grid-template-columns: 1fr !important;
  }

  .preview-live-actions {
    width: 100%;
    justify-content: flex-start;
  }
}

/* TechNova 2.9.4 proportional focus layout */
/*
   In focus mode the viewport grows, so the lab itself should grow with it.
   These rules scale workspace boxes, typography, controls and editor/output
   surfaces instead of leaving a desktop-sized lab floating in empty space.
*/

[data-course-lab].technova-lab-focus {
  --tn-focus-gap: clamp(16px, 1.3vw, 24px);
  --tn-focus-pad: clamp(18px, 1.55vw, 30px);
}

/* Let the active landing workspace consume the available viewport. */
[data-course-lab].technova-lab-focus .course-lab-stage {
  display: flex !important;
  align-items: stretch !important;
  padding: var(--tn-focus-pad) !important;
}

[data-course-lab].technova-lab-focus .course-lab-stage > .demo-grid,
[data-course-lab].technova-lab-focus .course-lab-stage > .autonomy-demo-grid,
[data-course-lab].technova-lab-focus .course-lab-stage > .tn-gd1,
[data-course-lab].technova-lab-focus .course-lab-stage > .game-dev1-shell {
  flex: 1 1 auto;
  width: 100% !important;
  min-height: calc(100dvh - 205px) !important;
  gap: var(--tn-focus-gap) !important;
  align-items: stretch !important;
}

/* Panels grow together rather than leaving blank space beneath them. */
[data-course-lab].technova-lab-focus .demo-grid > .demo-panel,
[data-course-lab].technova-lab-focus .autonomy-demo-grid > .demo-panel {
  min-height: 100% !important;
  height: 100% !important;
}

[data-course-lab].technova-lab-focus .demo-panel-header {
  min-height: 48px;
  padding: 13px 18px !important;
  font-size: clamp(10px, .68vw, 12px) !important;
}

[data-course-lab].technova-lab-focus .demo-panel-header i {
  width: 8px;
  height: 8px;
}

/* Python/code preview: enlarge the editor and output proportionally. */
[data-course-lab].technova-lab-focus .landing-python-demo .tn-code-shell,
[data-course-lab].technova-lab-focus .demo-code .tn-code-shell {
  --tn-font-size: clamp(14px, .9vw, 17px);
  --tn-gutter-width: clamp(50px, 3.2vw, 62px);
  border-radius: 15px;
}

[data-course-lab].technova-lab-focus .landing-python-demo .tn-code-toolbar,
[data-course-lab].technova-lab-focus .demo-code .tn-code-toolbar {
  height: 42px;
  padding-inline: 13px;
  font-size: 11px;
}

[data-course-lab].technova-lab-focus .landing-python-demo .tn-code-body,
[data-course-lab].technova-lab-focus .demo-code .tn-code-body {
  min-height: clamp(330px, 48dvh, 560px) !important;
}

[data-course-lab].technova-lab-focus .demo-output {
  min-height: clamp(330px, 48dvh, 560px) !important;
  padding: clamp(18px, 1.5vw, 26px) !important;
  font-size: clamp(13px, .83vw, 16px) !important;
  line-height: 1.7 !important;
}

[data-course-lab].technova-lab-focus .landing-python-toolbar {
  min-height: 72px;
  padding: 14px 18px !important;
}

[data-course-lab].technova-lab-focus .landing-python-toolbar small {
  font-size: 10px !important;
}

[data-course-lab].technova-lab-focus .landing-python-toolbar strong {
  font-size: clamp(14px, .9vw, 17px) !important;
}

[data-course-lab].technova-lab-focus .landing-run-python,
[data-course-lab].technova-lab-focus .demo-actions button,
[data-course-lab].technova-lab-focus .mini-action {
  min-height: 44px !important;
  padding: 10px 15px !important;
  font-size: clamp(11px, .72vw, 13px) !important;
}

[data-course-lab].technova-lab-focus .range-row {
  min-height: 54px;
  padding: 12px 18px !important;
  font-size: 12px !important;
}

[data-course-lab].technova-lab-focus .range-row output {
  font-size: 13px !important;
}

[data-course-lab].technova-lab-focus .metric-row {
  gap: 12px !important;
  padding: 16px !important;
}

[data-course-lab].technova-lab-focus .metric-row span {
  min-height: 74px;
  padding: 14px 16px !important;
  border-radius: 14px !important;
}

[data-course-lab].technova-lab-focus .metric-row small {
  font-size: 10px !important;
}

[data-course-lab].technova-lab-focus .metric-row b {
  font-size: clamp(18px, 1.2vw, 23px) !important;
}

/* Keep the focus header proportional too. */
[data-course-lab].technova-lab-focus .course-story-meta {
  min-height: 104px;
  padding: 20px clamp(22px, 2vw, 36px) !important;
}

[data-course-lab].technova-lab-focus .preview-course-icon {
  min-width: 58px;
  height: 58px;
}

[data-course-lab].technova-lab-focus .course-story-title h3 {
  font-size: clamp(34px, 3vw, 52px) !important;
}

[data-course-lab].technova-lab-focus .course-story-title p {
  font-size: clamp(12px, .8vw, 15px) !important;
}

[data-course-lab].technova-lab-focus .course-lab-footer {
  min-height: 62px;
  padding: 12px clamp(18px, 1.6vw, 28px) !important;
}

/* Lesson studios use the same idea: more room for every major pane. */
.interactive-lab.technova-lab-focus {
  padding: clamp(18px, 1.6vw, 28px) !important;
  font-size: clamp(15px, .88vw, 17px);
}

.interactive-lab.technova-lab-focus > .lab-heading {
  top: calc(-1 * clamp(18px, 1.6vw, 28px));
  margin: calc(-1 * clamp(18px, 1.6vw, 28px)) calc(-1 * clamp(18px, 1.6vw, 28px)) 20px;
  padding: 18px clamp(20px, 1.7vw, 30px) 16px;
}

.interactive-lab.technova-lab-focus .lab-heading h2 {
  font-size: clamp(28px, 2vw, 38px) !important;
}

.interactive-lab.technova-lab-focus .python-bench,
.interactive-lab.technova-lab-focus .web-bench,
.interactive-lab.technova-lab-focus .ai-bench,
.interactive-lab.technova-lab-focus .data-bench,
.interactive-lab.technova-lab-focus .sim-bench,
.interactive-lab.technova-lab-focus .app-bench {
  gap: var(--tn-focus-gap, 20px) !important;
  min-height: calc(100dvh - 210px);
  align-items: stretch;
}

.interactive-lab.technova-lab-focus .code-pane,
.interactive-lab.technova-lab-focus .evidence-pane,
.interactive-lab.technova-lab-focus .preview-pane,
.interactive-lab.technova-lab-focus .control-pane,
.interactive-lab.technova-lab-focus .model-pane,
.interactive-lab.technova-lab-focus .debug-pane,
.interactive-lab.technova-lab-focus .data-viz,
.interactive-lab.technova-lab-focus .app-tools,
.interactive-lab.technova-lab-focus .state-pane,
.interactive-lab.technova-lab-focus .local-model,
.interactive-lab.technova-lab-focus .data-python {
  min-height: 100%;
}

.interactive-lab.technova-lab-focus .tn-code-shell {
  --tn-font-size: clamp(14px, .9vw, 17px);
  --tn-gutter-width: clamp(50px, 3.2vw, 62px);
}

.interactive-lab.technova-lab-focus .tn-code-body,
.interactive-lab.technova-lab-focus .code-editor,
.interactive-lab.technova-lab-focus .web-editor,
.interactive-lab.technova-lab-focus .python-console,
.interactive-lab.technova-lab-focus .python-visual,
.interactive-lab.technova-lab-focus .python-plot {
  min-height: clamp(340px, 52dvh, 590px) !important;
}

.interactive-lab.technova-lab-focus .pane-bar,
.interactive-lab.technova-lab-focus .browser-bar,
.interactive-lab.technova-lab-focus .pane-actions,
.interactive-lab.technova-lab-focus .tabbar {
  min-height: 46px;
  padding: 11px 16px !important;
}

.interactive-lab.technova-lab-focus button,
.interactive-lab.technova-lab-focus select,
.interactive-lab.technova-lab-focus input[type="number"],
.interactive-lab.technova-lab-focus input[type="text"] {
  min-height: 42px;
}

/* Game Development I: grow blocks, stage and code panels without scaling the engine. */
.technova-lab-focus .tn-gd1-main,
.technova-lab-focus .tn-gd1.compact .tn-gd1-main {
  gap: clamp(16px, 1.2vw, 24px) !important;
}

.technova-lab-focus .tn-gd1-stage,
.technova-lab-focus .tn-gd1-blocks,
.technova-lab-focus .tn-gd1-code,
.technova-lab-focus .game-stage,
.technova-lab-focus .block-workspace {
  min-height: clamp(420px, 58dvh, 650px);
}

/* Large monitors get a balanced, readable split rather than tiny panels. */
@media (min-width: 1500px) {
  .technova-lab-focus .python-bench,
  .technova-lab-focus .web-bench,
  [data-course-lab].technova-lab-focus .landing-python-demo {
    grid-template-columns: minmax(0, 1.22fr) minmax(0, .95fr) !important;
  }
}

/* Avoid forced giant vertical boxes on short or narrow screens. */
@media (max-height: 720px) {
  [data-course-lab].technova-lab-focus .course-lab-stage > .demo-grid,
  [data-course-lab].technova-lab-focus .course-lab-stage > .autonomy-demo-grid,
  .interactive-lab.technova-lab-focus .python-bench,
  .interactive-lab.technova-lab-focus .web-bench,
  .interactive-lab.technova-lab-focus .ai-bench,
  .interactive-lab.technova-lab-focus .data-bench,
  .interactive-lab.technova-lab-focus .sim-bench,
  .interactive-lab.technova-lab-focus .app-bench {
    min-height: 500px !important;
  }

  [data-course-lab].technova-lab-focus .landing-python-demo .tn-code-body,
  [data-course-lab].technova-lab-focus .demo-output,
  .interactive-lab.technova-lab-focus .tn-code-body,
  .interactive-lab.technova-lab-focus .python-console,
  .interactive-lab.technova-lab-focus .python-visual,
  .interactive-lab.technova-lab-focus .python-plot {
    min-height: 300px !important;
  }
}

@media (max-width: 860px) {
  [data-course-lab].technova-lab-focus .course-lab-stage {
    display: block !important;
  }

  [data-course-lab].technova-lab-focus .course-lab-stage > .demo-grid,
  [data-course-lab].technova-lab-focus .course-lab-stage > .autonomy-demo-grid,
  .interactive-lab.technova-lab-focus .python-bench,
  .interactive-lab.technova-lab-focus .web-bench,
  .interactive-lab.technova-lab-focus .ai-bench,
  .interactive-lab.technova-lab-focus .data-bench,
  .interactive-lab.technova-lab-focus .sim-bench,
  .interactive-lab.technova-lab-focus .app-bench {
    min-height: 0 !important;
  }

  [data-course-lab].technova-lab-focus .demo-grid > .demo-panel,
  [data-course-lab].technova-lab-focus .autonomy-demo-grid > .demo-panel {
    min-height: auto !important;
    height: auto !important;
  }
}



/* TechNova 2.82.0 · landing showcase true fullscreen
   Landing Showcase has intentionally strong card constraints. These focus selectors are
   deliberately more specific so Full screen means the actual viewport, not a 1280px card. */
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus,
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus:fullscreen,
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus:-webkit-full-screen {
  position: fixed !important;
  inset: 0 !important;
  width: 100vw !important;
  max-width: none !important;
  height: 100vh !important;
  height: 100dvh !important;
  min-height: 100dvh !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  overflow: hidden !important;
  background: #071727 !important;
  box-shadow: none !important;
  animation: none !important;
  transform: none !important;
}

/* In landing fullscreen, marketing title/footer disappear. Keep only a floating Exit button. */
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus > .course-story-meta {
  position: fixed !important;
  z-index: 2147483646 !important;
  top: 12px !important;
  right: 12px !important;
  left: auto !important;
  bottom: auto !important;
  width: auto !important;
  min-height: 0 !important;
  display: flex !important;
  align-items: center !important;
  padding: 0 !important;
  margin: 0 !important;
  border: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  backdrop-filter: none !important;
  pointer-events: none !important;
}
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus > .course-story-meta .preview-course-icon,
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus > .course-story-meta .course-story-title,
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus > .course-story-meta .preview-live-badge {
  display: none !important;
}
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus > .course-story-meta .preview-live-actions {
  display: flex !important;
  width: auto !important;
  pointer-events: auto !important;
}
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus .lab-focus-button {
  min-height: 44px !important;
  padding: 10px 14px !important;
  border: 1px solid rgba(255,255,255,.24) !important;
  background: rgba(8,31,54,.92) !important;
  color: #fff !important;
  box-shadow: 0 12px 34px rgba(0,0,0,.28) !important;
  backdrop-filter: blur(12px) !important;
}

.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus > .course-lab-stage {
  position: absolute !important;
  inset: 0 !important;
  width: 100vw !important;
  max-width: none !important;
  height: 100vh !important;
  height: 100dvh !important;
  min-height: 100dvh !important;
  padding: 0 !important;
  margin: 0 !important;
  display: block !important;
  overflow: auto !important;
  background: #071727 !important;
}
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus > .course-lab-stage > .landing-lab-runtime {
  width: 100% !important;
  max-width: none !important;
  min-height: 100vh !important;
  min-height: 100dvh !important;
  height: 100% !important;
  margin: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  overflow: auto !important;
}
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus .landing-showcase-chip,
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus > .course-lab-footer {
  display: none !important;
}
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus .landing-lab-runtime > .interactive-lab {
  width: 100% !important;
  max-width: none !important;
  min-height: 100dvh !important;
  margin: 0 !important;
  border-radius: 0 !important;
}

/* Let showcase workspaces actually use the extra fullscreen height. */
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="web-"] .web-x-studio,
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="web-"] .web-x-grid,
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="data-"] .data-x-studio,
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="data-"] .data-x-grid {
  min-height: 100dvh !important;
}
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="web-"] .x-code-deck,
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="web-"] .x-result-deck,
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="data-"] .x-code-deck,
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="data-"] .data-x-stage {
  min-height: 100dvh !important;
}
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="robot-"] #rCanvas {
  width: 100% !important;
  height: calc(100dvh - 66px) !important;
  max-height: none !important;
  aspect-ratio: auto !important;
  object-fit: cover !important;
}


/* TechNova 2.84.0 · single-owner landing fullscreen + viewport-fit geometry
   The public Showcase owns fullscreen. The exact lesson runtime remains mounted and bound,
   but nested course fullscreen controls are suppressed only while that runtime is embedded. */
.technova-landing-modern [data-course-lab].compact-showcase .landing-lab-runtime .interactive-lab [data-lab-focus-toggle] {
  display: none !important;
}

/* A focused Showcase is a viewport shell, not a scrollable 1280px marketing card. */
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus > .course-lab-stage {
  overflow: hidden !important;
}
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus > .course-lab-stage > .landing-lab-runtime {
  height: 100% !important;
  min-height: 0 !important;
  max-height: 100% !important;
  overflow: hidden !important;
}
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus .landing-lab-runtime > .interactive-lab {
  width: 100% !important;
  height: 100% !important;
  min-height: 0 !important;
  max-height: 100% !important;
  overflow: hidden !important;
  box-sizing: border-box !important;
}

/* App Forge: header is intrinsic; the three-column builder consumes exactly the remainder. */
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="app-"] .landing-lab-runtime > .app-forge-studio {
  display: flex !important;
  flex-direction: column !important;
}
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="app-"] .forge-topbar {
  flex: 0 0 auto !important;
}
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="app-"] .forge-creation-grid {
  flex: 1 1 auto !important;
  min-height: 0 !important;
  height: auto !important;
  overflow: hidden !important;
}
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="app-"] .forge-library,
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="app-"] .forge-canvas-panel,
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="app-"] .forge-preview-panel {
  min-height: 0 !important;
  overflow: auto !important;
}

/* TN3 / Drone / AVE: bar + renderer + toolbar form one exact-height grid.
   The canvas must fill only the middle row; 100dvh belongs to the shell, not the canvas. */
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="robot-"] .technova-robotics-lab,
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="robot-"] .autonomy-learning-shell,
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="robot-"] .autonomy-console-grid,
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="robot-"] .autonomy-main-column {
  width: 100% !important;
  height: 100% !important;
  min-height: 0 !important;
  max-height: 100% !important;
  overflow: hidden !important;
}
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="robot-"] .autonomy-3d-shell {
  width: 100% !important;
  height: 100% !important;
  min-height: 0 !important;
  max-height: 100% !important;
  display: grid !important;
  grid-template-rows: auto minmax(0, 1fr) auto !important;
  overflow: hidden !important;
}
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="robot-"] #rCanvas {
  width: 100% !important;
  height: 100% !important;
  min-width: 0 !important;
  min-height: 0 !important;
  max-width: none !important;
  max-height: none !important;
  aspect-ratio: auto !important;
  object-fit: cover !important;
  align-self: stretch !important;
}
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="robot-"] .autonomy-sim-bar,
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="robot-"] .autonomy-sim-toolbar {
  position: relative !important;
  z-index: 9 !important;
  flex: 0 0 auto !important;
}
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="robot-"] .autonomy-drive-hud {
  bottom: 62px !important;
}

/* Web/Data/Game preview shells should use the available height, not add another viewport height. */
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="web-"] .web-x-studio,
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="web-"] .web-x-grid,
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="data-"] .data-x-studio,
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="data-"] .data-x-grid {
  height: 100% !important;
  min-height: 0 !important;
  max-height: 100% !important;
}


/* TechNova 2.84.0 · AVE / Drone landing fullscreen height-chain fix
   The real lesson is wrapped by landing-real-course-lab. In 2.83 that wrapper did not
   participate in the 100% height chain, so the Three.js shell could resolve against an
   auto-height ancestor and the bottom toolbar fell below the fullscreen viewport.
   Make every wrapper explicit, then reserve exact rows for status + world + controls. */
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="robot-"] > .course-lab-stage,
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="robot-"] > .course-lab-stage > .landing-lab-runtime,
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="robot-"] .landing-real-course-lab,
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="robot-"] .landing-real-course-lab > .interactive-lab,
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="robot-"] .autonomy-learning-shell,
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="robot-"] .autonomy-console-grid,
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="robot-"] .autonomy-main-column,
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="robot-"] .autonomy-3d-shell {
  width: 100% !important;
  height: 100% !important;
  min-width: 0 !important;
  min-height: 0 !important;
  max-width: none !important;
  max-height: 100% !important;
  box-sizing: border-box !important;
  overflow: hidden !important;
}

.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="robot-"] .landing-real-course-lab,
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="robot-"] .landing-real-course-lab > .interactive-lab {
  display: block !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 0 !important;
}

.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="robot-"] .autonomy-learning-shell {
  border: 0 !important;
  border-radius: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
}

.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="robot-"] .autonomy-console-grid,
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="robot-"] .autonomy-main-column {
  display: block !important;
}

.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="robot-"] .autonomy-3d-shell {
  position: relative !important;
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) !important;
  grid-template-rows: 38px minmax(0, 1fr) 68px !important;
  align-items: stretch !important;
  background: #07111e !important;
}

.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="robot-"] .autonomy-sim-bar {
  grid-row: 1 !important;
  width: 100% !important;
  height: 38px !important;
  min-height: 38px !important;
  max-height: 38px !important;
  box-sizing: border-box !important;
  margin: 0 !important;
}

.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="robot-"] #rCanvas {
  grid-row: 2 !important;
  display: block !important;
  width: 100% !important;
  height: 100% !important;
  min-width: 0 !important;
  min-height: 0 !important;
  max-width: none !important;
  max-height: none !important;
  margin: 0 !important;
  padding: 0 !important;
  aspect-ratio: auto !important;
  object-fit: cover !important;
  align-self: stretch !important;
  justify-self: stretch !important;
}

.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="robot-"] .autonomy-sim-toolbar {
  grid-row: 3 !important;
  display: flex !important;
  width: 100% !important;
  height: 68px !important;
  min-height: 68px !important;
  max-height: 68px !important;
  box-sizing: border-box !important;
  margin: 0 !important;
  padding: 10px 14px !important;
  align-items: center !important;
  justify-content: center !important;
  overflow: hidden !important;
}

.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="robot-"] .autonomy-drive-hud {
  bottom: 80px !important;
  max-width: calc(100% - 28px) !important;
}

/* Keep the one landing-owned Exit control above the TN3 status bar. */
.technova-landing-modern .course-story-item.compact-showcase.technova-lab-focus[data-course-lab^="robot-"] > .course-story-meta {
  z-index: 2147483647 !important;
}
