/*
 * World Builder map/grid authority.
 *
 * The backing world may span far beyond one construction surface, but the active
 * WorldBuilder table/cube is a 30 x 30 logical-cell surface. Camera zoom decides
 * how many of those cells are visible. Keeping this authority at 30 is critical:
 * placed-tile X/Y and footprint math are also authored against the 30-cell cube.
 */

html body .worldbuilder-studio .studio-viewer-canvas{
 --viewer-surface-size:min(
  calc(100cqw - var(--viewer-frame) - var(--viewer-frame)),
  calc(100cqh - var(--viewer-frame) - var(--viewer-frame))
 );
 --world-grid-columns:30;
 --world-grid-rows:30;
 --world-grid-cell-x:calc(100% / var(--world-grid-columns));
 --world-grid-cell-y:calc(100% / var(--world-grid-rows));
}

/* The active construction surface remains square regardless of viewer aspect. */
html body .worldbuilder-studio .studio-viewer-canvas .map{
 position:absolute!important;
 inset:auto!important;
 left:50%!important;
 top:50%!important;
 width:var(--viewer-surface-size)!important;
 height:var(--viewer-surface-size)!important;
 min-width:0!important;
 min-height:0!important;
 max-width:none!important;
 max-height:none!important;
 aspect-ratio:1 / 1!important;
 margin:0!important;
 transform:translate(-50%,-50%)!important;
 overflow:hidden!important;
}

html body .worldbuilder-studio .studio-viewer-canvas .world-stage{
 position:absolute!important;
 inset:0!important;
 width:100%!important;
 height:100%!important;
 min-width:100%!important;
 min-height:100%!important;
 max-width:none!important;
 max-height:none!important;
 aspect-ratio:1 / 1!important;
 isolation:isolate!important;
 transform-origin:center center!important;
}

/* The old viewer-grid node is no longer visible, but it stays measurable because
   navigation code uses its box to convert pointer pixels into world cells. Scale
   its hidden geometry with the camera so one drag-cell remains one rendered cell. */
html body .worldbuilder-studio .studio-viewer-canvas .studio-viewer-grid,
html body .worldbuilder-studio .studio-viewer-canvas .studio-viewer-grid.on,
html body .worldbuilder-studio .studio-viewer-canvas .studio-viewer-grid.off{
 display:block!important;
 position:absolute!important;
 inset:auto!important;
 left:50%!important;
 top:50%!important;
 width:var(--viewer-surface-size)!important;
 height:var(--viewer-surface-size)!important;
 visibility:hidden!important;
 opacity:0!important;
 pointer-events:none!important;
 background:none!important;
 background-image:none!important;
 border:0!important;
 outline:0!important;
 transform:translate(-50%,-50%) scale(var(--wb-view-zoom,1))!important;
 transform-origin:center center!important;
}

/* Disable only obsolete coordinate/grid overlays. The direct child stage grid
   below is the single visible presentation authority and therefore pans/zooms
   with authored content instead of drifting away from it. */
.worldbuilder-studio .studio-viewer-canvas .coordinate-system,
.worldbuilder-studio .studio-viewer-canvas .grid-coordinates,
.worldbuilder-studio .studio-viewer-canvas .coordinate-grid,
.worldbuilder-studio .studio-viewer-canvas .map-grid,
.worldbuilder-studio .studio-viewer-canvas .grid-overlay{
 display:none!important;
 visibility:hidden!important;
 background:none!important;
 background-image:none!important;
 border:0!important;
 outline:0!important;
}

/* One grid cell equals one addressable cell in the active 30 x 30 construction
   surface. Camera zoom exposes a smaller 10-16-cell window without rewriting
   tile identity or squeezing a 300-cell backing world into the phone screen. */
html body .worldbuilder-studio .studio-viewer-canvas .world-stage>.grid{
 position:absolute!important;
 inset:0!important;
 width:100%!important;
 height:100%!important;
 min-width:100%!important;
 min-height:100%!important;
 display:block!important;
 visibility:visible!important;
 box-sizing:border-box!important;
 pointer-events:none!important;
 z-index:30!important;
 border:0!important;
 outline:0!important;
 background-position:0 0!important;
 background-repeat:repeat!important;
}

html body .worldbuilder-studio .studio-viewer-canvas .world-stage>.grid.square{
 background-image:
  linear-gradient(to right,rgba(215,199,145,.52) 1px,transparent 1px),
  linear-gradient(to bottom,rgba(215,199,145,.52) 1px,transparent 1px)!important;
 background-size:var(--world-grid-cell-x) var(--world-grid-cell-y)!important;
}

html body .worldbuilder-studio .studio-viewer-canvas .world-stage>.grid.none{
 display:none!important;
 visibility:hidden!important;
 background:none!important;
 background-image:none!important;
}

/* No implicit terrain wallpaper. Visible terrain remains authored content. */
html body .worldbuilder-studio .studio-viewer-canvas .world-stage>.base.ocean-world{
 background:#071015!important;
 background-image:none!important;
 background-repeat:no-repeat!important;
 z-index:0!important;
}

html body .worldbuilder-studio .studio-viewer-canvas .world-stage>.base.ocean-world::after{
 content:none!important;
 display:none!important;
 background:none!important;
 background-image:none!important;
}

/* Legacy/core pseudo-element grids are explicitly disabled. */
html body .worldbuilder-studio .studio-viewer-canvas .world-stage::before,
html body .worldbuilder-studio .studio-viewer-canvas .world-stage::after,
html body .worldbuilder-studio .studio-viewer-canvas .map::before,
html body .worldbuilder-studio .studio-viewer-canvas .map::after{
 content:none!important;
 display:none!important;
 visibility:hidden!important;
 background:none!important;
 background-image:none!important;
 border:0!important;
 outline:0!important;
}
