/* ibcs-content.base.css -- IBCS-owned base stylesheet (V10 MB-14.3).
   Minimal, theme-neutral, scoped entirely under .ibcs-content. No global resets, no
   Bootstrap/MudBlazor/ThemeForest classes or dependencies.
   Compatibility (V10 MB-14.12): a breaking change here means removing/renaming a core
   class, changing wrapper semantics, or introducing a global (unscoped) selector. New
   additive classes/rules are compatible and may appear in a minor release. */

.ibcs-content {
  overflow-wrap: break-word;
}

/* Contiene gli ECO allineati a sinistra/destra (float): non escono dal wrapper del contenuto. */
.ibcs-content {
  display: flow-root;
}

.ibcs-content > :first-child {
  margin-top: 0;
}

.ibcs-content > :last-child {
  margin-bottom: 0;
}

/* HTML strutturato: i default sugli elementi valgono solo per gli elementi senza class. Su un
   elemento con classi (ammesse dai sanitizer, es. h5, list-unstyled, blockquote) decide il
   foglio del Consumer che le definisce. :where() non aggiunge specificita': per il contenuto
   senza classi le regole restano identiche a prima. */
.ibcs-content h2:where(:not([class])),
.ibcs-content h3:where(:not([class])),
.ibcs-content h4:where(:not([class])) {
  line-height: 1.25;
}

.ibcs-content p:where(:not([class])),
.ibcs-content ul:where(:not([class])),
.ibcs-content ol:where(:not([class])),
.ibcs-content blockquote:where(:not([class])),
.ibcs-content pre,
.ibcs-content .ibcs-media,
.ibcs-content .ibcs-custom-component {
  margin: 0 0 1em;
}

.ibcs-content ul:where(:not([class])),
.ibcs-content ol:where(:not([class])) {
  padding-inline-start: 1.5em;
}

.ibcs-content blockquote:where(:not([class])) {
  margin-inline-start: 0;
  padding-inline-start: 1em;
  border-inline-start: 0.25em solid currentColor;
}

.ibcs-content pre {
  overflow-x: auto;
  padding: 0.75em 1em;
}

.ibcs-content code {
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}

.ibcs-content pre code {
  font-family: inherit;
}

.ibcs-content hr {
  border: none;
  border-top: 1px solid currentColor;
  opacity: 0.25;
}

/* Tabelle (editor TinyMCE, allowlist V10 MB-13.8 estesa): il contenuto salvato non porta
   stili o attributi di presentazione inline, quindi l'aspetto minimo e neutro e' dato qui ed e'
   sovrascrivibile dal foglio Consumer. */
.ibcs-content table {
  border-collapse: collapse;
  max-width: 100%;
  margin: 0 0 1em;
}

.ibcs-content th,
.ibcs-content td {
  border: 1px solid rgba(127, 127, 127, 0.5);
  padding: 0.25em 0.5em;
  text-align: start;
  vertical-align: top;
}

.ibcs-content caption {
  margin-bottom: 0.5em;
  font-size: 0.875em;
  opacity: 0.75;
}

/* Media (V10 MB-14.5/MB-14.7). */
.ibcs-content .ibcs-media {
  display: block;
}

/* Immagini: il riquadro (span o figure) e' largo quanto l'immagine, mai oltre la larghezza
   disponibile. width/height dell'<img> portano la larghezza di visualizzazione scelta (o le
   dimensioni originali): max-width + height:auto mantengono le proporzioni. La didascalia non
   allarga il riquadro (contain: inline-size) e va a capo sulla larghezza dell'immagine. */
.ibcs-content .ibcs-media--image {
  box-sizing: border-box;
  width: fit-content;
  max-width: 100%;
}

.ibcs-content .ibcs-media--image img {
  display: block;
  max-width: 100%;
  height: auto;
}

.ibcs-content .ibcs-media--image .ibcs-media__caption {
  contain: inline-size;
}

.ibcs-content .ibcs-media--align-left {
  margin-inline-end: auto;
}

.ibcs-content .ibcs-media--align-center {
  margin-inline: auto;
  text-align: center;
}

.ibcs-content .ibcs-media--align-right {
  margin-inline-start: auto;
}

/* Sinistra/destra: il testo successivo affianca l'immagine (float), che resta al massimo meta'
   della larghezza disponibile. Centro: riga propria, sotto eventuali elementi flottanti. */
.ibcs-content .ibcs-media--image.ibcs-media--align-left {
  float: left;
  clear: left;
  max-width: 50%;
  margin: 0.25em 1.25em 1em 0;
}

.ibcs-content .ibcs-media--image.ibcs-media--align-right {
  float: right;
  clear: right;
  max-width: 50%;
  margin: 0.25em 0 1em 1.25em;
}

.ibcs-content .ibcs-media--image.ibcs-media--align-center {
  clear: both;
}

.ibcs-content .ibcs-media__caption {
  margin-top: 0.5em;
  font-size: 0.875em;
  opacity: 0.75;
}

.ibcs-content .ibcs-media--video {
  position: relative;
  aspect-ratio: 16 / 9;
}

.ibcs-content .ibcs-media--video iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}

.ibcs-content .ibcs-media--document.ibcs-media__download {
  display: inline-block;
}

/* Custom Component (V10 MB-14.5/MB-14.8): nessuna presunzione sul design del Consumer
   oltre al display block del contenitore. */
.ibcs-content .ibcs-custom-component {
  display: block;
}

/* Allineamento dell'istanza (data-ibcs-align): il contenitore si adatta al contenuto entro
   limiti responsivi, senza dimensioni fisse. Sinistra/destra al massimo meta' della larghezza
   disponibile, cosi' il testo lo affianca; centro su una riga propria. Un contenuto piu' largo
   del contenitore (es. una tabella) scorre dentro il contenitore invece di uscire dalla pagina.
   Senza allineamento la resa resta a tutta larghezza. */
.ibcs-content .ibcs-custom-component[data-ibcs-align] {
  box-sizing: border-box;
  width: fit-content;
  max-width: 100%;
  overflow-x: auto;
}

.ibcs-content .ibcs-custom-component[data-ibcs-align="left"] {
  float: left;
  clear: left;
  max-width: 50%;
  margin: 0.25em 1.25em 1em 0;
}

.ibcs-content .ibcs-custom-component[data-ibcs-align="right"] {
  float: right;
  clear: right;
  max-width: 50%;
  margin: 0.25em 0 1em 1.25em;
}

.ibcs-content .ibcs-custom-component[data-ibcs-align="center"] {
  clear: both;
  margin-inline: auto;
}

/* Viewport stretti: meta' larghezza lascerebbe al testo una colonna illeggibile. Gli elementi
   allineati tornano su una riga propria, mantenendo il lato scelto e la larghezza disponibile. */
@media (max-width: 30em) {
  .ibcs-content .ibcs-media--image.ibcs-media--align-left,
  .ibcs-content .ibcs-media--image.ibcs-media--align-right,
  .ibcs-content .ibcs-custom-component[data-ibcs-align="left"],
  .ibcs-content .ibcs-custom-component[data-ibcs-align="right"] {
    float: none;
    clear: both;
    max-width: 100%;
    margin-top: 0;
    margin-bottom: 1em;
  }

  .ibcs-content .ibcs-media--image.ibcs-media--align-left,
  .ibcs-content .ibcs-custom-component[data-ibcs-align="left"] {
    margin-inline: 0 auto;
  }

  .ibcs-content .ibcs-media--image.ibcs-media--align-right,
  .ibcs-content .ibcs-custom-component[data-ibcs-align="right"] {
    margin-inline: auto 0;
  }
}

/* Embedded Content Object (V10 MB-14.5): contenitore generico usato anche dal fallback
   "placeholder sicuro/neutro" (V10 MB-14.9) per un ECO non piu' risolvibile. Nessuno
   stile di errore visibile per costruzione, solo il display base del contenitore. */
.ibcs-content .ibcs-embedded-object {
  display: block;
}
