:root {
  --color-text: #999;
  --color-text-dimmed: #666;
  --color-text-bright: #fff;
  --color-background: #000;
  --font-primary: "Roboto Condensed";
  --font-secondary: "Roboto";
  --font-size: 20px;
  --font-size-xsmall: 0.75rem;
  --font-size-small: 1rem;
  --font-size-medium: 1.5rem;
  --font-size-large: 3.25rem;
  --font-size-xlarge: 3.75rem;
  --gap-body-top: 60px;
  --gap-body-right: 60px;
  --gap-body-bottom: 60px;
  --gap-body-left: 60px;
  --gap-modules: 30px;
}

html {
  cursor: none;
  overflow: hidden;
  background: var(--color-background);
  user-select: none;
  font-size: var(--font-size);
}

::-webkit-scrollbar {
  display: none;
}

body {
  margin: var(--gap-body-top) var(--gap-body-right) var(--gap-body-bottom) var(--gap-body-left);
  position: absolute;
  height: calc(100% - var(--gap-body-top) - var(--gap-body-bottom));
  width: calc(100% - var(--gap-body-right) - var(--gap-body-left));
  background: var(--color-background);
  color: var(--color-text);
  font-family: var(--font-primary), sans-serif;
  font-weight: 400;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
}

/**
 * Default styles.
 */

.dimmed {
  color: var(--color-text-dimmed);
}

.normal {
  color: var(--color-text);
}

.bright {
  color: var(--color-text-bright);
}

.xsmall {
  font-size: var(--font-size-xsmall);
  line-height: 1.275;
}

.small {
  font-size: var(--font-size-small);
  line-height: 1.25;
}

.medium {
  font-size: var(--font-size-medium);
  line-height: 1.225;
}

.large {
  font-size: var(--font-size-large);
  line-height: 1;
}

.xlarge {
  font-size: var(--font-size-xlarge);
  line-height: 1;
  letter-spacing: -3px;
}

.thin {
  font-family: var(--font-secondary), sans-serif;
  font-weight: 100;
}

.light {
  font-family: var(--font-primary), sans-serif;
  font-weight: 300;
}

.regular {
  font-family: var(--font-primary), sans-serif;
  font-weight: 400;
}

.bold {
  font-family: var(--font-primary), sans-serif;
  font-weight: 700;
}

.align-right {
  text-align: right;
}

.align-left {
  text-align: left;
}

header {
  text-transform: uppercase;
  font-size: var(--font-size-xsmall);
  font-family: var(--font-primary), Arial, Helvetica, sans-serif;
  font-weight: 400;
  border-bottom: 1px solid var(--color-text-dimmed);
  line-height: 15px;
  padding-bottom: 5px;
  margin-bottom: 10px;
  color: var(--color-text);
}

sup {
  font-size: 50%;
  line-height: 50%;
}

/**
 * Module styles.
 */

.module {
  margin-bottom: var(--gap-modules);
}

.module.hidden {
  pointer-events: none;
}

.module:not(.hidden) {
  pointer-events: auto;
}

.region.bottom .module {
  margin-top: var(--gap-modules);
  margin-bottom: 0;
}

.no-wrap {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.pre-line {
  white-space: pre-line;
}

/**
 * Region Definitions.
 */

.region {
  position: absolute;
}

.region.fullscreen {
  position: absolute;
  inset: calc(-1 * var(--gap-body-top)) calc(-1 * var(--gap-body-right)) calc(-1 * var(--gap-body-bottom)) calc(-1 * var(--gap-body-left));
  pointer-events: none;
}

.region.right {
  right: 0;
  text-align: right;
}

.region.top {
  top: 0;
}

.region.top.center,
.region.bottom.center {
  left: 50%;
  transform: translateX(-50%);
}

.region.top.right,
.region.top.left,
.region.top.center {
  top: 100%;
}

.region.bottom {
  bottom: 0;
}

.region.bottom.right,
.region.bottom.center,
.region.bottom.left {
  bottom: 100%;
}

.region.bar {
  width: 100%;
  text-align: center;
}

.region.third,
.region.middle.center {
  width: 100%;
  text-align: center;
  transform: translateY(-50%);
}

.region.upper.third {
  top: 33%;
}

.region.middle.center {
  top: 50%;
}

.region.lower.third {
  top: 66%;
}

.region.left {
  text-align: left;
}

.region table {
  width: 100%;
  border-spacing: 0;
  border-collapse: separate;
}

/**
 * Container Definitions.
 */

.region .container {
  display: flex;
  flex-direction: column;
}

.region .container.hidden {
  display: none;
}

/* ===== Layout verticale per schermi piccoli (cellulari/tablet) ===== */
@media (max-width: 900px) {
  html {
    font-size: 16px;
    overflow-y: auto;
  }

  body {
    margin: 10px;
    padding: 0;
    position: static;
    width: auto;
    height: auto;

    /* Rende le regioni una colonna scorrevole */
    display: flex;
    flex-direction: column;
    align-items: stretch;
  }

  /* Le regioni smettono di essere assolute e diventano blocchi normali */
  .region {
    position: static !important;
    width: 100% !important;
    text-align: left !important;
    transform: none !important;
    top: auto !important;
    bottom: auto !important;
    left: auto !important;
    right: auto !important;

    margin: 0 0 20px 0;
  }

  .region .container {
    display: block;
  }

  .region table {
    width: 100%;
  }

  /* Ordine delle regioni nella colonna mobile
     (Avvisi prima, poi immagini/news, poi calendario/liturgia) */
  #top_right {
    order: 1;   /* MMM-Avvisi */
  }

  #top_center {
    order: 2;   /* MMM-ImageSlideshow + newsfeed Vatican News */
  }

  #top_left {
    order: 3;   /* calendario + iFrame liturgia */
  }

  /* Le altre regioni, se presenti, vanno in fondo */
  #top_bar,
  #upper_third,
  #middle_center,
  #lower_third,
  #bottom_left,
  #bottom_center,
  #bottom_right,
  #bottom_bar,
  #fullscreen_above,
  #fullscreen_below {
    order: 99;
  }

  /* Font leggermente ridotti su mobile */
  .large {
    font-size: 2rem;
  }

  .medium {
    font-size: 1.25rem;
  }

  .small,
  .xsmall {
    font-size: 0.9rem;
  }
}
