    .questionmark {
      animation: colorchange 30s infinite; /* animation-name followed by duration in seconds*/
      -webkit-animation: colorchange 30s infinite; /* Chrome and Safari */
    }


    @keyframes colorchange
    {
      0%   {color: red;}
      25%  {color: yellow;}
      50%  {color: blue;}
      75%  {color: green;}
      100% {color: red;}
    }

    @-webkit-keyframes colorchange /* Safari and Chrome - necessary duplicate */
    {
      0%   {color: red;}
      25%  {color: yellow;}
      50%  {color: blue;}
      75%  {color: green;}
      100% {color: red;}
    }  

    html {height: 100%;}

    body {
      height: 100%;
      overflow: hidden; 
      /*background-image: url('../images/fondo8.jpg'); */
      
      background-repeat: no-repeat;
      background-size: 100% 100%; 
        
        
     /* animation: colorchange2 30s infinite; /* animation-name followed by duration in seconds*/
     /* -webkit-animation: colorchange2 30s infinite;  /* Chrome and Safari */
    }

    @keyframes colorchange2
    {
      0%   {background: #c94c4c;}
      25%  {background: #FFBF00;}
      50%  {background: #0039e6;}
      75%  {background: #53c653;}
      100% {background: #c94c4c;}
    }

    @-webkit-keyframes colorchange2 /* Safari and Chrome - necessary duplicate */
    {
      0%   {background: #c94c4c;}
      25%  {background: #FFBF00;}
      50%  {background: #0039e6;}
      75%  {background: #53c653;}
      100% {background: #c94c4c;}
    }


 .label {   /* instant trivia */
    -webkit-appearance: none; /* necesary for Safari */
    -moz-appearance: none;
    appearance: none; 
    background-color: whitesmoke;  /* #1e6dce; */ 
    border-style: solid;
    border-width: 1px;
    border-color: lightgray;
    border-radius: 10px; 
    color: black;
    margin: 0pt; 
    padding: 5pt; 
    width: 100%;
    text-align: left;
    line-height: 100%; 
    font-size: 100%; 
    font-weight: normal; 
    display: flex;
    align-items: flex-start;  
}


 .label2 {  /* XMPP trivia (display: flex messed with result div's */
    -webkit-appearance: none; /* necesary for Safari */
    -moz-appearance: none;
    appearance: none; 
    background-color: whitesmoke;  /* #1e6dce; */ 
    border-style: solid;
    border-width: 1px;
    border-color: lightgray;
    border-radius: 10px; 
    color: black;
    margin: 0pt; 
    padding: 5pt; 
    width: 100%;
    text-align: left;
    line-height: 100%; 
    font-size: 100%; 
    font-weight: normal; 
    align-items: center;  
}

.vertical-center {
  margin: 0;
  position: absolute;
  top: 50%;
  -ms-transform: translateY(-50%);
  transform: translateY(-50%);
}




    /* Center the loader */
    #loader {
      position: absolute;
      left: 50%;
      top: 50%;
      z-index: 1;
      margin: -75px 0 0 -75px;
      border: 16px solid #f3f3f3;
      border-radius: 50%;
      border-top: 16px solid #3498db;
      width: 120px;
      height: 120px;
      -webkit-animation: spin 2s linear infinite;
      animation: spin 2s linear infinite;
    }

    @-webkit-keyframes spin {
      0% { transform: -webkit-rotate(0deg); }
      100% {transform:  -webkit-rotate(360deg); }
    }

    @keyframes spin {
      0% { transform: rotate(0deg); }
      100% { transform: rotate(360deg); }
    }     
	

/* circular countdown */
 #circular_countdown {
  position: relative;
  margin: auto;
  height: 80px;
  width: 80px;
  text-align: center;
}

#countdown-number {
  color: black;
  display: inline-block;
  line-height: 80px;
  margin-left: 2px;
  margin-top: 0px;
  font-size: 120%;
}

svg {
  position: absolute;
  top: 0;
  right: 0;
  width: 80px;
  height: 80px;
  transform: rotateY(-180deg) rotateZ(-90deg);
}

svg circle {
  stroke-dasharray: 160px;
  stroke-dashoffset: 0px;
  stroke-linecap: round;
  stroke-width: 7px;
  stroke: white;
  fill: none;
  /* animation: countdown 15s linear  forwards; */
}

@keyframes countdown {
  from {
    stroke-dashoffset: 0px;
  }
  to {
    stroke-dashoffset: 160px;
  }
}  


/* animated dots loader */
.loader2 {
  position: relative;
  width: 80px;
  margin: 100px auto;
}

.duo {
  height: 20px;
  width: 50px;
  background: hsla(0, 0%, 0%, 0.0);
  position: absolute;
  
}

.duo, .dot {
  animation-duration: 0.8s;
  animation-timing-function: ease-in-out;
  animation-iteration-count: infinite;
}

.duo1 {
  left: 0;
}

.duo2 {
  left: 30px
}


.dot {
  width: 20px;
  height: 20px;
  border-radius: 10px;
  background: #FFFFFF;
  position: absolute;
}

.dot-a {
  left: 0px;  
}

.dot-b {
  right: 0px;
}


@keyframes spin {
    0% { transform: rotate(0deg) }
   50% { transform: rotate(180deg) }
  100% { transform: rotate(180deg) }
}

@keyframes onOff {
    0% { opacity: 0; }
   49% { opacity: 0; }
   50% { opacity: 1; }
  100% { opacity: 1; }
}

.duo1 {
  animation-name: spin;
}

.duo2 {
  animation-name: spin;
  animation-direction: reverse;
}

.duo2 .dot-b {
  animation-name: onOff;
}

.duo1 .dot-a {
  opacity: 0;
  animation-name: onOff;
  animation-direction: reverse;
}


/* ######## background animation, floating symbols */
.center-elements {
    top: -180px;
    bottom: 0;
    left: -150px;
    right: 0;
    width: 1px;
    margin: auto;
    height: 1px;
}

.element {
    z-index: -1 !important;
    position: relative;
    -webkit-animation: size 20s linear infinite alternate, pulse 5s linear infinite alternate, moveX 1s linear 0s infinite alternate, moveY 1s linear 0s infinite alternate;
    -moz-animation: size 20s linear infinite alternate, pulse 5s linear infinite alternate, moveX 1s linear 0s infinite alternate, moveY 1s linear 0s infinite alternate;
    -o-animation: size 20s linear infinite alternate, pulse 5s linear infinite alternate, moveX 1s linear 0s infinite alternate, moveY 1s linear 0s infinite alternate;
    animation: size 20s linear infinite alternate, pulse 5s linear infinite alternate, moveX 10s linear 0s infinite alternate, moveY 10s linear 0s infinite alternate;
}

.element2 {
    z-index: -1 !important;
    position: relative;
    -webkit-animation: size 35s linear infinite alternate, pulse2 9s linear infinite alternate, moveX2 35.05s linear 0s infinite alternate, moveY2 35.4s linear 0s infinite alternate;
    -moz-animation: size 35s linear infinite alternate, pulse2 9s linear infinite alternate, moveX2 35.05s linear 0s infinite alternate, moveY2 35.4s linear 0s infinite alternate;
    -o-animation: size 35s linear infinite alternate, pulse2 9s linear infinite alternate, moveX2 35.05s linear 0s infinite alternate, moveY2 35.4s linear 0s infinite alternate;
    animation: size 35s linear infinite alternate, pulse2 9s linear infinite alternate, moveX2 35.05s linear 0s infinite alternate, moveY2 35.4s linear 0s infinite alternate;
}

.element3 {
    z-index: -1 !important;
    position: relative;
    animation: size 10s linear infinite alternate, pulse3 5s linear infinite alternate, particle2 20s linear infinite alternate;
}

.element4 {
    z-index: -1 !important;
    position: relative;
    animation: pulse 6s linear infinite alternate, big 50s linear infinite alternate;
}

.element5 {
    z-index: -1 !important;
    position: relative;
    animation: size 25s linear infinite alternate, pulse3 8s linear infinite alternate, nudge 50s linear infinite alternate;
}

.element6 {
    z-index: -1 !important;
    position: relative;
    -webkit-animation: pulse2 5s linear infinite alternate, moveX 15.05s linear 0s infinite alternate, moveY 15.4s linear 0s infinite alternate;
    -moz-animation: pulse2 5s linear infinite alternate, moveX 15.05s linear 0s infinite alternate, moveY 15.4s linear 0s infinite alternate;
    -o-animation: pulse2 5s linear infinite alternate, moveX 15.05s linear 0s infinite alternate, moveY 15.4s linear 0s infinite alternate;
    animation: pulse2 s linear infinite alternate, moveX 15.05s linear 0s infinite alternate, moveY 15.4s linear 0s infinite alternate;
}


.element7 {
    z-index: -1 !important;
    position: absolute;
    animation: pulse4 5s linear infinite alternate, particle3 50s linear infinite alternate;
}



@keyframes particle {
    100% {
        -webkit-transform: translate3d(100vw, 90vh, 100px);
        transform: translate3d(100vw, 100vh, 90px);
    }
}

@keyframes particle2 {
    100% {
        -webkit-transform: translate3d(10vw, 100vh, 57px);
        transform: translate3d(10vw, 100vh, 57px);
    }
}

@keyframes particle3 {
    from {
        transform: translateY(-2000px);
        transform: translateX(-20vw);
    }
    to {
        transform: translateX(-20vw);
        transform: translateY(2000px);
    }
}

@keyframes big {
    100% {
        -webkit-transform: translate3d(100vw, 90vh, 100px);
        transform: translate3d(100vw, 100vh, 90px);
    }
    20% {
        -moz-transform: scale(0);
        -ms-transform: scale(0);
        -webkit-transform: scale(0);
        transform: scale(0);
    }
    40% {
        -moz-transform: scale(1);
        -ms-transform: scale(1);
        -webkit-transform: scale(1);
        transform: scale(1);
    }
}

@keyframes size {
    0%,
    100% {
        -moz-transform: scale(1);
        -ms-transform: scale(1);
        -webkit-transform: scale(1);
        transform: scale(1);
    }
    50% {
        -moz-transform: scale(2);
        -ms-transform: scale(2);
        -webkit-transform: scale(2);
        transform: scale(2);
    }
}

@keyframes moveX {
    from {
        left: 0;
    }
    to {
        left: -100vw;
    }
}

@keyframes moveY {
    from {
        top: 0;
    }
    to {
        top: -100vh;
    }
}



@keyframes pulse {
    0%,
    100% {
        color: red;
    }
    50% {
        color: orange;
    }
}

@keyframes pulse2 {
    0%,
    100% {
        color: #25c5d8;
    }
    25% {
        color: #1de9b6;
    }
    50% {
        color: #b2ff59;
    }
    75% {
        color: #7cb342;
    }
}

@keyframes pulse3 {
    0%,
    100% {
        color: pink;
    }
    25% {
        color: #ff4081;
    }
    50% {
        color: #e53935;
    }
    75% {
        color: #bc477b;
    }
}

@keyframes pulse4 {
    0%,
    100% {
        color: #00c853;
    }
    25% {
        color: #69f0ae;
    }
    50% {
        color: #00695c;
    }
    75% {
        color: #76d275;
    }
}

@keyframes nudge {
    0%,
    100% {
        transform: translate(100vh, 100vw);
    }
    50% {
        transform: translate(-50vh, 50vw);
    }
    80% {
        transform: translate(50vh, 0vw);
    }
}


/* ########################## HANGMAN  */

.wrappper {
  width: 100%;
  margin: 0 auto;
}
.wrappper:after {
  content: "";
  display: table;
  clear: both;
}



#alphabet {
  margin: 15px auto;
  padding: 0;
  max-width: 800px;
}
#alphabet:after {
  content: "";
  display: table;
  clear: both;
}

#alphabet li {
  float: left;
  margin: 0 10px 10px 0;
  list-style: none;
  width: 35px;
  height: 30px;
  padding-top: 2px;
  background: #fff;
  color: black;
  cursor: pointer;
  -moz-border-radius: 5px;
  -webkit-border-radius: 5px;
  border-radius: 5px;
  -khtml-border-radius: 5px;
  border: solid 1px #fff;
}
#alphabet li:hover {
  background: #c1d72e;
  border: solid 1px #fff;
  color: #fff;
}

#my-word {
  margin: 0;
  display: block;
  padding: 0;
  display: block;
}

#my-word li {
  position: relative;
  list-style: none;
  margin: 0;
  display: inline-block;
  padding: 0 10px;
  font-size: 1.6em;
}

.active {
  opacity: 0.4;
  filter: alpha(opacity=40);
  -moz-transition: all 1s ease-in;
  -moz-transition: all 0.3s ease-in-out;
  -webkit-transition: all 0.3s ease-in-out;
  cursor: default;
}
.active:hover {
  -moz-transition: all 1s ease-in;
  -moz-transition: all 0.3s ease-in-out;
  -webkit-transition: all 0.3s ease-in-out;
  opacity: 0.4;
  filter: alpha(opacity=40);
  -moz-transition: all 1s ease-in;
  -moz-transition: all 0.3s ease-in-out;
  -webkit-transition: all 0.3s ease-in-out;
}

#mylives {
  font-size: 1.6em;
  text-align: center;
  display: block;
}

button {
  -moz-border-radius: 5px;
  -webkit-border-radius: 5px;
  border-radius: 5px;
  -khtml-border-radius: 5px;
  background: #c1d72e;
  color: #fff;
  border: solid 1px #fff;
  text-decoration: none;
  cursor: pointer;
  font-size: 1.2em;
  padding: 18px 10px;
  width: 180px;
  margin: 10px;
  outline: none;
}
button:hover {
  -webkit-transition: all 0.3s ease-in-out;
  -moz-transition: all 0.3s ease-in-out;
  transition: all 0.3s ease-in-out;
  background: #fff;
  border: solid 1px #fff;
  color: #c1d72e;
}

@media (max-width: 767px) {
  #alphabet {
    padding: 0 0 0 15px;
  }
}
@media (max-width: 480px) {
  #alphabet {
    padding: 0 0 0 25px;
  }
}



/* ################## wheel of fortune   */
:where(.ui-wheel-of-fortune) {
  --_items: 6;
  all: unset;
  aspect-ratio: 1 / 1;
  container-type: inline-size;
  direction: ltr;
  display: grid;
  position: relative;
  width: 100%;
  &::after {
    aspect-ratio: 1/cos(30deg);
    background-color: crimson;
    clip-path: polygon(50% 100%,100% 0,0 0);
    content: "";
    height: 4cqi;
    position: absolute;
    place-self: start center;
    scale: 1.4;
  }

  & > * { position: absolute; }

  button {
    aspect-ratio: 1 / 1;
    background: hsla(0, 0%, 100%, .8);
    border: 0;
    border-radius: 50%;
    cursor: pointer;
    font-size: 5cqi;
    place-self: center;
    width: 20cqi;
  }

  ul {
    all: unset;
    clip-path: inset(0 0 0 0 round 50%);
    display: grid;
    inset: 0;
    place-content: center start;

    li {
      align-content: center;
      aspect-ratio: 1 / calc(2 * tan(180deg / var(--_items)));
      background: hsl(calc(360deg / var(--_items) * calc(var(--_idx))), 100%, 75%);
      clip-path: polygon(0% 0%, 100% 50%, 0% 100%);
      display: grid;
      font-size: 5cqi;
      grid-area: 1 / -1;
      padding-left: 1ch;
      rotate: calc(360deg / var(--_items) * calc(var(--_idx) - 1));
      transform-origin: center right;
      user-select: none;
      width: 50cqi;

      &:nth-of-type(1) { --_idx: 1; }
      &:nth-of-type(2) { --_idx: 2; }
      &:nth-of-type(3) { --_idx: 3; }
      &:nth-of-type(4) { --_idx: 4; }
      &:nth-of-type(5) { --_idx: 5; }
      &:nth-of-type(6) { --_idx: 6; }
      &:nth-of-type(7) { --_idx: 7; }
      &:nth-of-type(8) { --_idx: 8; }
      &:nth-of-type(9) { --_idx: 9; }
      &:nth-of-type(10) { --_idx: 10; }
      &:nth-of-type(11) { --_idx: 11; }
      &:nth-of-type(12) { --_idx: 12; }
    }
  }
}

/* ################## vertical roulette  */
  :root{
    --item-height: 80px;          /* alto de cada ítem */
    --item-width:  280px;         /* ancho de la ruleta */
    --radius: 12px;
    --accent: #0d6efd;
   /* --bg: #0b1020;
    --panel: #121A33; */
    --text: #E7ECFF;
  }

.roulette-container {
  display: grid;
  place-items: center; /* Centers both vertically and horizontally */
  height: 60vh; /* ocupa toda (80%) la altura de la ventana */
  /* background: red;  */   
}



  .app{
    display:grid;
    gap:14px;
    align-items:center;
    justify-items:center;
    background: rgb(255, 255, 0, 0.3);
  }

  .v-roulette{
    display: inline-grid;   /* se ajusta al contenido */
    width: auto;            /* ancho según el contenido */
    border-radius: var(--radius);
    padding: 18px 18px 14px;
    /*background: linear-gradient(180deg, #151f3f, #0e1530);*/
    box-shadow: 0 10px 24px rgba(0,0,0,.35), inset 0 1px 0 rgba(255,255,255,.05);
    display:grid;
    gap:14px;
  }


  .viewport{
    position: relative;
    height: var(--item-height);
    overflow: hidden;
    border-radius: calc(var(--radius) - 4px);
    background: var(--panel);
  }

  /* Línea/puntero en el centro (divide la ventana horizontalmente) */
  .viewport::after{
    content:"";
    position:absolute;
    inset: 50% 0 auto 0;
    height:2px;
    transform: translateY(-50%);
    background: linear-gradient(90deg, transparent 0 10%, var(--accent) 40% 60%, transparent 90% 100%);
    opacity:.7;
    pointer-events:none;
  }

  /* Desvanecidos superior e inferior para estética */
  .viewport::before{
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    background: linear-gradient(
        to bottom,
    rgba(255,255,0,1) 0%,      /* arriba blanco sólido */
    rgba(255,255,0,0) 20%,     /* se desvanece */
    rgba(255,255,0,0) 80%,     
    rgba(255,255,0,1) 100%     /* abajo blanco sólido */
    );
  }

  .reel{
    will-change: transform;
  }

  .item{
    display:grid;
    align-items:center;
    height: var(--item-height);
    padding: 0 16px;
    font-size: 22px;
    font-weight: 700;
    letter-spacing:.2px;
    color: darkblue;
    background:
      linear-gradient(90deg, rgba(255,255,255,.04), rgba(255,255,255,0) 30% 70%, rgba(255,255,255,.04)),
      linear-gradient(180deg, rgba(255,255,255,.06), rgba(255,255,255,0));
    border-bottom: 1px solid rgba(255,255,255,.06);
  }

  .controls{
    display:flex;
    gap:10px;
    width:100%;
    justify-content:center;
    align-items:center;
  }

  .controls button{
    appearance:none;
    border:0;
    border-radius: 999px;
    padding: 10px 16px;
    background: var(--accent);
    color:white;
    font-weight:normal;
    cursor:pointer;
    box-shadow: 0 6px 18px rgba(13,110,253,.35);
  }
  .controls button:disabled{
    //opacity:.6;
    cursor:not-allowed;
    box-shadow:none;
  }

  .letter-circle {
    width: 30px;
    height: 30px;
    border-radius: 50%;
    background: #007bff;
    color: white;
    align-items: center;
    justify-content: center;
    font-weight: bold;
    margin-right: 8px;  
    display:inline-grid;
    flex: 0 0 30px; /* no crece ni se encoge: mantiene 30px */ 
  }

  .icon-circle-red {
    width: 70px;
    height: 70px;
    border-radius: 50%;
    background: #FFCCCB;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: bold;
    display: inline-flex;  
    //margin-right: 8px;  
  }

  .icon-circle-green {
    width: 70px;
    height: 70px;
    border-radius: 50%;
    background: #90EE90;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: bold;
    display: inline-flex;  
    //margin-right: 8px;  
  }

  .icon-circle-blue {
    width: 70px;
    height: 70px;
    border-radius: 50%;
    background: blue;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: bold;
    display: inline-flex;   
  }


/* feedback form  */
    fieldset { border: 0; padding: 0; }
    legend { font-weight: 600; margin-bottom: 8px; }

    /* Contenedor de estrellas */
    .rating {
      display: inline-block;
      direction: rtl;          /* truco para que ~ afecte a las estrellas “anteriores” visualmente */
      font-size: 0;            /* elimina espacios entre labels inline-block */
      user-select: none;
    }

    .rating > input {
      position: absolute;
      left: -9999px;           /* radios visibles para accesibilidad, pero fuera de vista */
    }

    .rating > label {
      display: inline-block;
      width: 42px;
      height: 42px;
      cursor: pointer;
      line-height: 42x;
      text-align: center;
      transition: transform .08s ease;
    }

    /* Estrella “vacía” (se pinta con color) */
    .rating > label::before {
      content: "★";            /* usa glyph; si prefieres SVG, se puede cambiar */
      font-size: 38px;
      color: #cfcfcf;
      display: block;
    }

    /* Hover: estrella y las de la izquierda (visual) */
    .rating > label:hover::before,
    .rating > label:hover ~ label::before {
      color: #ffc107;
      transform: scale(1.05);
    }

    /* Selección: pinta la elegida y las de la izquierda (visual) */
    .rating > input:checked ~ label::before {
      color: #ffc107;
    }

    .output {
      margin-left: .5rem;
      font-weight: 600;
      vertical-align: middle;
    }


  /* Accesibilidad de movimiento reducido */
  @media (prefers-reduced-motion: reduce){
    .reel{ transition: none !important; }
  }

