/*
 * This file is generated by Luna. Do not edit it by hand.
 * Your changes are overwritten the next time the app is generated.
 * To make changes, use the Luna Builder, then Generate.
 * @luna-generated v1
 */
/* Generated by Luna. Do not edit manually. */
:root {
  /* Font: sourced from active theme (ThemeEditor > Typography).
     --tblr-font-sans-serif is set in theme-tokens.css (ThemeCssPublisher);
     --app-font-family mirrors it so non-Tabler elements stay in sync. */
  --app-font-family: 'Inter', sans-serif;
  --app-font-scale: 1rem;
  --app-density-spacing: 1rem;
}

body {
  font-family: var(--app-font-family);
  font-size: var(--app-font-scale);
}

/* Centered ~50% content column (Centered Focus). Full width with gutters
   on small screens; caps to a readable measure and centres on wide ones
   (~50% at common desktop widths). */
.luna-content-half {
  width: 100%;
  max-width: 720px;
  margin-left: auto;
  margin-right: auto;
  padding-left: 1rem;
  padding-right: 1rem;
}

/* Nav item icons set in Builder > Menus. Visible alongside the title in
   normal mode; remain visible as the sole visual in the icon-rail preset
   (where nav-link-title is hidden by the media query below). */
.luna-nav-icon {
  flex: 0 0 auto;
  opacity: 0.65;
}

/* First-letter badges — hidden everywhere except the Icon Rail preset. */
.luna-nav-letter,
.luna-brand-letter {
  display: none;
  flex: 0 0 auto;
  width: 1.75rem;
  height: 1.75rem;
  align-items: center;
  justify-content: center;
  border-radius: 6px;
  font-weight: 600;
  font-size: 0.8rem;
  background: rgba(0, 0, 0, 0.06);
}

/* Icon Rail sidebar — desktop only; collapses to the normal labelled
   navbar on mobile (< 992px) where the toggler + full titles return. */
@media (min-width: 992px) {
  .luna-rail.navbar-vertical { width: 4.5rem; }
  .luna-rail.navbar-vertical ~ .page-wrapper { margin-left: 4.5rem; }
  .luna-rail .nav-link-title,
  .luna-rail .luna-brand-text { display: none; }
  .luna-rail .luna-nav-letter,
  .luna-rail .luna-brand-letter { display: inline-flex; }
  .luna-rail .nav-link { justify-content: center; padding-left: 0; padding-right: 0; }
  .luna-rail .navbar-brand { justify-content: center; }
}

/* Mobile horizontal-overflow guard. A card grid's negative row gutters,
   an unbroken token, or a wide child must never push the page past the
   viewport (reported: a sidebar page scrolled to 394px on a 390px screen).
   `clip` (not `hidden`) trims the few px of gutter slop without creating a
   scroll container, so position:sticky chrome keeps working. The grid
   children also get min-width:0 so a wide cell shrinks instead of pushing. */
@media (max-width: 991.98px) {
  .page-wrapper { overflow-x: clip; }
  .card-grid-block,
  .card-grid-block > .row > [class*="col"] { min-width: 0; }
}