/* Layout kit */
.ly-grid { display: grid; grid-template-columns: var(--ly-cols); column-gap: var(--ly-gap); row-gap: var(--ly-row-gap); }
.ly-grid > * { min-width: 0; }
.ly-grid.has-rules > *:not(:last-child) { border-right: var(--border-hairline) solid var(--line-soft); padding-right: var(--ly-gap); }
.ly-grid.has-rules { column-gap: var(--ly-gap); }
.ly-stack { display: flex; flex-direction: column; min-width: 0; }
.ly-stack.has-rules > * + * { border-top: var(--border-hairline) solid var(--line-soft); padding-top: var(--space-lg); }
.ly-section.has-rule { border-top: var(--border-hairline) solid var(--line); padding-top: var(--space-xl); }
.ly-band.is-tint { background: var(--surface-alt); }
.ly-band.is-inverse { background: var(--inverse); color: var(--on-inverse); }
.ly-main-end { padding-bottom: var(--space-3xl); }
@media (max-width: 1100px) {
  .ly-grid { grid-template-columns: var(--ly-tablet, var(--ly-cols)); }
  .ly-grid.has-rules > * { border-right: 0; padding-right: 0; }
}
@media (max-width: 760px) {
  .ly-grid { grid-template-columns: 1fr; }
  .ly-hide-phone { display: none !important; }
}
/* Inside layout grids, standard cards stack (photo above text) in every system.
   Layouts that want photo-beside-text use the explicit "row" card. */
.ly-grid, .ly-stack, .nw-carousel-track { --standard-direction: column; --standard-thumb-width: 100%; --standard-gap: var(--space-sm); }
