/* Precision Lilac Alloy — frame material only. Load after window-layout.css.
   A 240px source with slice64/edge32 paints a rail exactly equal to existing
   --ac-frame-rail; corners are twice that size and never stretch along edges. */
.ac-world-shell .ac-frame {
  /* One soft tint follows the bevel; stacked shadows darken each other. */
  filter: drop-shadow(0 6px 12px #53355035);
}
.ac-world-shell .ac-frame::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: -1;
  box-sizing: border-box;
  pointer-events: none;
  clip-path: none;
  background: none;
  box-shadow: none;
  border: var(--ac-frame-rail) solid var(--ac-frame-edge);
  border-radius: 13px;
  border-image-source: url('/assets/textures/frames/precision-lilac-frame.svg');
  border-image-slice: 64;
  border-image-width: calc(var(--ac-frame-rail) * 2);
  border-image-outset: 0;
  border-image-repeat: stretch;
}
.ac-world-shell .ac-frame::after {
  inset: calc(var(--ac-frame-rail) - 2px);
  pointer-events: none;
  border: 2px solid var(--ac-inner-rim, #744e71);
  border-top-color: var(--ac-frame-edge);
  border-bottom-color: #bc8bae;
  border-right-color: #bc8bae;
  border-radius: 12px;
  box-shadow: inset 0 1px 2px #5335504d;
}
.ac-world-shell .ac-frame > .ac-frame__guard,
.ac-world-shell .ac-frame > .ac-frame__rail {
  display: none;
}
/* Native dialogs have the same class and use this same inert nine-slice.
   Their existing heading/body backgrounds, padding, focus and X44 stay intact. */
@media (forced-colors: active) {
  .ac-world-shell .ac-frame { filter: none; }
  .ac-world-shell .ac-frame::before {
    border-image: none;
    border: 2px solid CanvasText;
    border-radius: 12px;
    background: Canvas;
  }
  .ac-world-shell .ac-frame::after {
    border-color: CanvasText;
    box-shadow: none;
  }
}
/* No light blinks or frame animation; reduced motion needs no override. */
