/* Browser Compatibility CSS - Prefissi Vendor e Fallback */

/* Keyframes con prefissi vendor */
@-webkit-keyframes fadeInUp {
  from {
    opacity: 0;
    -webkit-transform: translateY(30px);
    transform: translateY(30px);
  }
  to {
    opacity: 1;
    -webkit-transform: translateY(0);
    transform: translateY(0);
  }
}

@-moz-keyframes fadeInUp {
  from {
    opacity: 0;
    -moz-transform: translateY(30px);
    transform: translateY(30px);
  }
  to {
    opacity: 1;
    -moz-transform: translateY(0);
    transform: translateY(0);
  }
}

@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translateY(30px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@-webkit-keyframes pulse {
  0% {
    -webkit-box-shadow: 0 0 0 0 rgba(0, 123, 255, 0.7);
    box-shadow: 0 0 0 0 rgba(0, 123, 255, 0.7);
  }
  70% {
    -webkit-box-shadow: 0 0 0 10px rgba(0, 123, 255, 0);
    box-shadow: 0 0 0 10px rgba(0, 123, 255, 0);
  }
  100% {
    -webkit-box-shadow: 0 0 0 0 rgba(0, 123, 255, 0);
    box-shadow: 0 0 0 0 rgba(0, 123, 255, 0);
  }
}

@keyframes pulse {
  0% {
    box-shadow: 0 0 0 0 rgba(0, 123, 255, 0.7);
  }
  70% {
    box-shadow: 0 0 0 10px rgba(0, 123, 255, 0);
  }
  100% {
    box-shadow: 0 0 0 0 rgba(0, 123, 255, 0);
  }
}

@-webkit-keyframes shimmer {
  0% {
    background-position: -200px 0;
  }
  100% {
    background-position: calc(200px + 100%) 0;
  }
}

@keyframes shimmer {
  0% {
    background-position: -200px 0;
  }
  100% {
    background-position: calc(200px + 100%) 0;
  }
}

/* Box-sizing con prefissi */
*, *:before, *:after {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

/* Flexbox con prefissi */
.header-buttons {
  display: -webkit-box;
  display: -webkit-flex;
  display: -moz-box;
  display: -ms-flexbox;
  display: flex;
  -webkit-box-orient: horizontal;
  -webkit-box-direction: normal;
  -webkit-flex-direction: row;
  -moz-flex-direction: row;
  -ms-flex-direction: row;
  flex-direction: row;
  -webkit-flex-wrap: wrap;
  -ms-flex-wrap: wrap;
  flex-wrap: wrap;
  -webkit-box-pack: center;
  -webkit-justify-content: center;
  -moz-justify-content: center;
  -ms-flex-pack: center;
  justify-content: center;
  gap: 15px;
  /* Fallback per gap */
  margin-left: -7.5px;
  margin-right: -7.5px;
}

.header-buttons > * {
  margin-left: 7.5px;
  margin-right: 7.5px;
}

/* Transform con prefissi */
.demo-btn:hover,
.load-json-btn:hover,
#generatePptBtn:hover {
  -webkit-transform: translateY(-2px);
  -moz-transform: translateY(-2px);
  -ms-transform: translateY(-2px);
  transform: translateY(-2px);
}

.demo-btn:active,
#generatePptBtn:active {
  -webkit-transform: translateY(0);
  -moz-transform: translateY(0);
  -ms-transform: translateY(0);
  transform: translateY(0);
}

.disclaimer:hover {
  -webkit-transform: translateY(-2px);
  -moz-transform: translateY(-2px);
  -ms-transform: translateY(-2px);
  transform: translateY(-2px);
}

/* Transition con prefissi */
.demo-btn,
.load-json-btn,
#generatePptBtn,
.disclaimer,
.export-section .btn {
  -webkit-transition: all 0.3s ease;
  -moz-transition: all 0.3s ease;
  -ms-transition: all 0.3s ease;
  -o-transition: all 0.3s ease;
  transition: all 0.3s ease;
}

/* Linear gradient con prefissi */
.disclaimer {
  background: -webkit-linear-gradient(315deg, #fff3cd 0%, #ffeaa7 100%);
  background: -moz-linear-gradient(315deg, #fff3cd 0%, #ffeaa7 100%);
  background: -ms-linear-gradient(315deg, #fff3cd 0%, #ffeaa7 100%);
  background: -o-linear-gradient(315deg, #fff3cd 0%, #ffeaa7 100%);
  background: linear-gradient(135deg, #fff3cd 0%, #ffeaa7 100%);
}

header {
  background: -webkit-linear-gradient(315deg, #2c3e50, #34495e);
  background: -moz-linear-gradient(315deg, #2c3e50, #34495e);
  background: -ms-linear-gradient(315deg, #2c3e50, #34495e);
  background: -o-linear-gradient(315deg, #2c3e50, #34495e);
  background: linear-gradient(135deg, #2c3e50, #34495e);
}

.demo-btn {
  background: -webkit-linear-gradient(315deg, #ff6b35, #f7931e);
  background: -moz-linear-gradient(315deg, #ff6b35, #f7931e);
  background: -ms-linear-gradient(315deg, #ff6b35, #f7931e);
  background: -o-linear-gradient(315deg, #ff6b35, #f7931e);
  background: linear-gradient(135deg, #ff6b35, #f7931e);
}

.load-json-btn {
  background: -webkit-linear-gradient(315deg, #007bff, #0056b3);
  background: -moz-linear-gradient(315deg, #007bff, #0056b3);
  background: -ms-linear-gradient(315deg, #007bff, #0056b3);
  background: -o-linear-gradient(315deg, #007bff, #0056b3);
  background: linear-gradient(135deg, #007bff, #0056b3);
}

#exportJsonBtn {
  background: -webkit-linear-gradient(315deg, #28a745, #1e7e34);
  background: -moz-linear-gradient(315deg, #28a745, #1e7e34);
  background: -ms-linear-gradient(315deg, #28a745, #1e7e34);
  background: -o-linear-gradient(315deg, #28a745, #1e7e34);
  background: linear-gradient(135deg, #28a745, #1e7e34);
}

#exportXmlBtn {
  background: -webkit-linear-gradient(315deg, #ffc107, #e0a800);
  background: -moz-linear-gradient(315deg, #ffc107, #e0a800);
  background: -ms-linear-gradient(315deg, #ffc107, #e0a800);
  background: -o-linear-gradient(315deg, #ffc107, #e0a800);
  background: linear-gradient(135deg, #ffc107, #e0a800);
}

#generatePptBtn {
  background: -webkit-linear-gradient(315deg, #ff6b35, #f7931e);
  background: -moz-linear-gradient(315deg, #ff6b35, #f7931e);
  background: -ms-linear-gradient(315deg, #ff6b35, #f7931e);
  background: -o-linear-gradient(315deg, #ff6b35, #f7931e);
  background: linear-gradient(135deg, #ff6b35, #f7931e);
}

/* Animation con prefissi */
.disclaimer {
  -webkit-animation: fadeInUp 1.2s ease-out;
  -moz-animation: fadeInUp 1.2s ease-out;
  -ms-animation: fadeInUp 1.2s ease-out;
  animation: fadeInUp 1.2s ease-out;
}

.disclaimer::before {
  -webkit-animation: shimmer 4s infinite;
  -moz-animation: shimmer 4s infinite;
  -ms-animation: shimmer 4s infinite;
  animation: shimmer 4s infinite;
}

header {
  -webkit-animation: fadeInUp 1s ease-out;
  -moz-animation: fadeInUp 1s ease-out;
  -ms-animation: fadeInUp 1s ease-out;
  animation: fadeInUp 1s ease-out;
}

header::before {
  -webkit-animation: shimmer 3s infinite;
  -moz-animation: shimmer 3s infinite;
  -ms-animation: shimmer 3s infinite;
  animation: shimmer 3s infinite;
}

/* Border-radius fallback per IE */
.disclaimer,
.demo-btn,
.load-json-btn,
#generatePptBtn,
.export-section,
.export-section .btn,
.hs-trash {
  /* Fallback per browser che non supportano border-radius */
  behavior: url(border-radius.htc); /* Per IE8 e precedenti */
}

/* Calc() fallback */
.wrap {
  min-height: 500px; /* Fallback */
  min-height: calc(100vh - 120px);
}

/* Opacity fallback per IE8 */
header .subtitle {
  opacity: 0.8;
  filter: alpha(opacity=80); /* IE8 e precedenti */
}

/* Display inline-flex fallback */
#generatePptBtn {
  display: inline-block; /* Fallback */
  display: -webkit-inline-box;
  display: -webkit-inline-flex;
  display: -moz-inline-box;
  display: -ms-inline-flexbox;
  display: inline-flex;
  -webkit-box-align: center;
  -webkit-align-items: center;
  -moz-align-items: center;
  -ms-flex-align: center;
  align-items: center;
}

/* Media queries per responsive design */
@media screen and (max-width: 768px) {
  .header-buttons {
    -webkit-flex-direction: column;
    -moz-flex-direction: column;
    -ms-flex-direction: column;
    flex-direction: column;
    -webkit-box-align: center;
    -webkit-align-items: center;
    -moz-align-items: center;
    -ms-flex-align: center;
    align-items: center;
  }
  
  .wrap {
    padding: 10px;
  }
  
  .demo-btn,
  .load-json-btn,
  #generatePptBtn {
    width: 100%;
    max-width: 300px;
  }
}

/* Supporto per IE9+ */
@media screen and (min-width: 0\0) {
  .header-buttons {
    display: block;
    text-align: center;
  }
  
  .header-buttons > * {
    display: inline-block;
    vertical-align: top;
  }
}

/* Correzioni specifiche per Internet Explorer */
.ie-fallback {
  /* Stili specifici per IE quando necessario */
  zoom: 1; /* Trigger hasLayout per IE6-7 */
}

/* Supporto per browser senza CSS Grid */
.no-cssgrid .grid-container {
  display: block;
}

.no-cssgrid .grid-item {
  float: left;
  width: 50%;
}

/* Clearfix per float */
.clearfix::after {
  content: "";
  display: table;
  clear: both;
}