/* Layout only. Existing surface, color, type and account rules remain the source of truth. */
.sv-canvas-safe-area {
  position: fixed;
  visibility: hidden;
  pointer-events: none;
  width: 0;
  height: 0;
  padding-top: env(safe-area-inset-top, 0px);
  padding-bottom: env(safe-area-inset-bottom, 0px);
}
#main .sv-canvas-workspace {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(300px, .9fr);
  grid-template-rows: minmax(0, 1fr);
  grid-template-areas: 'preview controls';
  gap: var(--sv-workspace-gap, 16px);
  align-items: stretch;
  min-width: 0;
  height: var(--sv-workspace-height, calc(100dvh - 120px));
  min-height: 0;
  max-height: none;
  scroll-margin-top: var(--sv-workspace-top, 16px);
  /* Keyboard resizing must not anchor the page to a moving preview/control. */
  overflow-anchor: none;
  margin-bottom: 28px;
}
#main .sv-canvas-preview,
#main .sv-canvas-controls {
  min-width: 0;
  min-height: 0;
  width: 100%;
  height: 100%;
  align-self: stretch;
  scroll-behavior: auto;
  scroll-padding: 14px;
  scrollbar-width: thin;
  scrollbar-color: var(--mode-muted) transparent;
}
#main .sv-canvas-preview {
  grid-area: preview;
  display: flex;
  flex-direction: column;
  overflow: auto;
}
#main .sv-canvas-controls {
  grid-area: controls;
  display: block;
  overflow: auto;
  /* Natural scroll chaining lets users leave the editor for galleries and navigation. */
  overscroll-behavior: auto;
  padding: 2px 4px 16px 2px;
}
#main .sv-canvas-controls > * { min-width: 0; max-width: 100%; }
#main .sv-canvas-controls > * + * { margin-top: 16px; }
#main .sv-canvas-controls > :last-child { margin-bottom: 0; }
#main .sv-canvas-preview:focus-visible,
#main .sv-canvas-controls:focus-visible {
  outline: 2px solid var(--mode-accent);
  outline-offset: 3px;
}
#main .sv-canvas-preview > :is(.template-stage-panel,.generation-preview,.cs-canvas-panel,.cs-profile-preview,.paid-scene-editor),
#main [data-sv-workspace='film-preview'] .sv-canvas-preview > section,
#main .sv-canvas-preview > .sv-canvas-direction-stage {
  display: flex;
  flex: 1 1 0;
  flex-direction: column;
  align-items: stretch;
  justify-content: center;
  min-width: 0;
  min-height: 0;
  height: 100%;
  max-height: 100%;
  margin: 0;
  position: relative;
  top: auto;
}
#main .sv-canvas-preview :is(.template-canvas-wrap,.cs-canvas-wrap,.generation-preview-art,.cs-reference) {
  display: flex;
  flex: 1 1 0;
  align-items: center;
  justify-content: center;
  min-width: 0;
  min-height: 0;
  max-height: 100%;
  height: auto;
  width: 100%;
  aspect-ratio: auto;
  overflow: hidden;
}
/* The element box, not just its painted content, keeps the canvas aspect ratio.
   Character Studio converts pointer coordinates through this exact box. */
#main .sv-canvas-preview :is(#template-canvas,#cs-canvas) {
  display: block;
  flex: 0 0 auto;
  width: auto;
  height: auto;
  max-width: 100%;
  max-height: 100%;
  min-width: 0;
  min-height: 0;
  aspect-ratio: auto;
  object-fit: contain;
}
#main .sv-canvas-preview .generation-preview-art { padding: 12px; }
#main .sv-canvas-preview :is(.generation-preview-art,.cs-reference) > img {
  width: 100%;
  height: 100%;
  min-height: 0;
  max-height: 100%;
  object-fit: contain;
}
#main .sv-canvas-preview .generation-empty { max-width: 100%; padding: 8px; }
#main .sv-canvas-preview .cs-reference { flex-basis: 0; }
#main .sv-canvas-preview .notebook {
  min-height: 100%;
  flex: 0 0 auto;
  width: 100%;
  margin: 0;
  overflow-wrap: anywhere;
}
#main .sv-canvas-controls .cs-intent { margin-bottom: 0; }
#main .sv-canvas-controls .cs-intent-fields { grid-template-columns: 1fr; }
#main .sv-canvas-controls .cs-layer-panel { overflow: visible; }
#main .sv-canvas-controls .film-plan-panel { margin-bottom: 0; }
#main .sv-canvas-tools { padding: 18px; }
#main .sv-canvas-tools > :first-child { margin-top: 0; }
#main .sv-canvas-tools > :last-child { margin-bottom: 0; }
#main .sv-canvas-tools .panel-top { padding: 0 0 14px; }
#main .sv-canvas-tools .generation-references { padding: 16px 0 0; }
#main .sv-canvas-tools .generation-image-meta { padding: 14px 0; }
#main .sv-canvas-controls :is(.template-stage-actions,.cs-stage-actions,.cs-profile-actions,.cs-transfer-actions,.generation-actions,.paid-bottom-actions) { flex-wrap: wrap; }
#main .sv-canvas-controls .paid-board-header { gap: 12px; margin-bottom: 0; }
#main .sv-canvas-controls .paid-board-header h2 { overflow-wrap: anywhere; }
#main .sv-canvas-controls .paid-scenes {
  display: flex;
  flex-direction: row;
  width: 100%;
  max-height: none;
  overflow-x: auto;
  overflow-y: hidden;
  gap: 10px;
  padding: 3px 2px 12px;
}
#main .sv-canvas-controls .paid-scene-card { flex: 0 0 230px; }
#main .sv-canvas-controls .paid-summary { width: 100%; }
#main .sv-canvas-controls .paid-bottom-actions { margin-top: 16px; gap: 12px; }
#main .sv-canvas-controls .film-coverage { grid-template-columns: repeat(2,minmax(0,1fr)); }
#main .sv-canvas-controls .film-chapter-row { grid-template-columns: minmax(0,1fr) 115px; }
#main .sv-canvas-controls .film-chapter-source > div { grid-template-columns: 1fr; }
#main .sv-canvas-preview .paid-scene-editor,
#main [data-sv-workspace='film-preview'] .sv-canvas-preview > section,
#main .sv-canvas-preview > .sv-canvas-direction-stage { align-items: center; }
#main .sv-canvas-preview :is(.paid-frame,.paid-cinema,.image-stage,#film-stage) {
  flex: 0 0 auto;
  max-width: 100%;
  max-height: 100%;
  min-height: 0;
  margin: 0;
}
#main .sv-canvas-workspace.sv-workspace-stacked {
  grid-template-columns: minmax(0,1fr);
  grid-template-rows: minmax(0,var(--sv-preview-height)) minmax(0,var(--sv-controls-height));
  grid-template-areas: 'preview' 'controls';
}
#main .sv-workspace-stacked .sv-canvas-preview > :is(.template-stage-panel,.cs-canvas-panel,.cs-profile-preview) { padding: 10px; }
#main .sv-workspace-stacked .template-canvas-wrap.image-composition { padding: 8px; }
#main .sv-workspace-stacked .sv-canvas-preview .notebook { padding: 18px 22px; }
#main .sv-workspace-stacked .sv-canvas-controls { padding-bottom: 20px; }
#main .sv-workspace-compact .sv-canvas-preview > :is(.template-stage-panel,.cs-canvas-panel,.cs-profile-preview),
#main .sv-workspace-compact .generation-preview-art,
#main .sv-workspace-compact .template-canvas-wrap.image-composition { padding: 5px; }
#main .sv-workspace-compact .generation-empty { gap: 6px; }
#main .sv-workspace-compact .generation-empty svg { width: 28px; height: 28px; }
#main .sv-workspace-compact .generation-empty span { font-size: 8px; }
#main .sv-workspace-compact .paid-frame-title,
#main .sv-workspace-compact .paid-cinema-caption { padding: 9px; }
#main .sv-workspace-compact .paid-frame-title h3,
#main .sv-workspace-compact .paid-cinema-caption h2 { font-size: clamp(14px,3vw,23px); margin-top: 4px; }
#main .sv-workspace-compact .paid-cinema-caption p { max-height: 2.8em; overflow: auto; }
@media (max-width: 420px) {
  #main .sv-canvas-controls .paid-control-grid { grid-template-columns: minmax(0,1fr); }
  #main .sv-canvas-controls .film-chapter-row { grid-template-columns: minmax(0,1fr); }
  #main .sv-canvas-controls .film-chapter-row > select { max-width: 100%; }
  #main .sv-canvas-tools { padding: 14px; }
}
@media (prefers-reduced-motion: reduce) {
  #main .sv-canvas-workspace, #main .sv-canvas-workspace * { scroll-behavior: auto; }
}
