/* Page loading styles. Externalized for CSP compliance (style-src 'self', no inline style). */
@keyframes spinner {
  to {
    transform: rotate(1turn)
  }
}

.page-loading {
  background-color: #fff;
  bottom: 0;
  height: 100%;
  left: 0;
  opacity: 0;
  position: fixed;
  right: 0;
  top: 0;
  transition: all .4s ease-in-out .2s;
  visibility: hidden;
  width: 100%;
  z-index: 99999
}

.page-loading.active {
  opacity: 1;
  visibility: visible
}

.page-loading.active>.page-loading-inner {
  opacity: 1
}

.page-loading-inner {
  left: 0;
  opacity: 0;
  position: absolute;
  text-align: center;
  top: 50%;
  transform: translateY(-50%);
  transition: opacity .2s ease-in-out;
  width: 100%
}

.page-loading-inner>span {
  color: #9397ad;
  display: block;
  font-size: 1rem;
  font-weight: 400
}

.page-spinner {
  animation: spinner .75s linear infinite;
  border: .15em solid #b4b7c9;
  border-radius: 50%;
  border-right-color: transparent;
  display: inline-block;
  height: 2.75rem;
  margin-bottom: .75rem;
  vertical-align: text-bottom;
  width: 2.75rem
}

[data-bs-theme=dark] .page-loading {
  background-color: #0b0f19
}

[data-bs-theme=dark] .page-loading-inner>span {
  color: #fff;
  opacity: .6
}

[data-bs-theme=dark] .page-spinner {
  border-color: hsla(0, 0%, 100%, .4) transparent hsla(0, 0%, 100%, .4) hsla(0, 0%, 100%, .4)
}

/* Superset addition: fr/index.html had this extra rule appended to its inline <style> block
   (not present in the other 17 "page loading" blocks). Preserved here so index.html keeps it. */
.heading-features {
    color: var(--dc-heading-color);
    font-size: 1.25rem;
}

/* Utilitaires anti-inline (conformité CSP) */

/* Header mobile nav logo (17 pages: about, blog-news, contact, features, index, legal-notice,
   press-kit, preview, pricing, blog/tutoriel-connexion-simplyrestau, blog/tutoriel-creation-boisson,
   blog/tutoriel-creation-carte-digitale, blog/tutoriel-creation-glace, blog/tutoriel-creation-menu,
   blog/tutoriel-creation-plat, blog/tutoriel-gestion-fiche-restaurant, blog/tutoriels) */
.fr-u-max-height-30 {
  max-height: 30px;
}

/* fr/features.html - "Essayez l'application !" handwritten highlight */
.fr-u-font-size-4rem-important {
  font-size: 4rem !important;
}

/* fr/contact.html - #captchaError message */
.fr-contact-error {
  color: red;
  display: none;
}

/* fr/preview.html - lead paragraph */
.fr-u-font-size-2rem {
  font-size: 2rem;
}

/* fr/preview.html - centered paragraph + centered "bold" div */
.fr-u-text-center {
  text-align: center;
}

/* fr/preview.html - .mobile-device.iphone-x wrapper */
.fr-u-max-width-375-important {
  max-width: 375px !important;
}

/* fr/preview.html - demo iframe */
.fr-preview-iframe {
  width: 100%;
  border-radius: 25px;
  border: none;
}

/* fr/MenuShare.html - .mobile-device.iphone-x.screenStyle wrapper */
.fr-menushare-device {
  min-height: 80vh;
  min-width: -webkit-fill-available;
}

/* fr/MenuShare.html - #menuFrame iframe */
.fr-menushare-iframe {
  border-radius: 25px;
  border: none;
  min-height: 98vh;
  min-width: -webkit-fill-available;
}

/* fr/index.html - decorative background shape */
.fr-index-shape-bg {
  width: 600px;
  height: 600px;
}

/* fr/blog/*.html (7 tutoriel pages) - YouTube video embed iframe */
.fr-blog-video-iframe {
  border: none;
  width: 100%;
  min-height: 360px;
}

/* fr/about.html - team photo backgrounds */
.fr-about-photo-clement {
  background-image: url('../img/team/clement_sebillet.jpg');
}

.fr-about-photo-tristan {
  background-image: url('../img/team/Tristan-Sebillet-SimplyRestau.webp');
}

.fr-about-photo-thibault {
  background-image: url('../img/team/thibault_langot.jpg');
}
