:root { --default-font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; --rose: #ff0069ff; --violet-jtc: #542344ff; --steel-blue: #2d82b7ff; --magnolia: #fcf7ffff; --pearl: #e6e1c5ff; --card-size: 0.6; --card-effect: linear-gradient(45deg, #0006, #fff3 70%); font-family: var(--default-font-family); } body { margin: 0; background-size: 50%; background-repeat: no-repeat; background-position: left bottom; background-color: #111; height: 100vh; } dialog a { text-decoration: none; font-weight: bold; color: white; } dialog#welcome { max-width: 50vw; } body.background-01 { /* background-image: url("./images/background-02.png"), linear-gradient(270deg, #111 0%, #3c5462 90%); */ background-image: linear-gradient(270deg, #111 0%, #607d8b 90%); } body.background-02 { /* background-image: url("./images/background-02.png"), linear-gradient(270deg, #111 0%, #3c5462 90%); */ background-image: linear-gradient(270deg, #111 0%, #3c5462 90%); } body.background-03 { /* background-image: url("./images/background-02.png"), linear-gradient(270deg, #111 0%, #3c5462 90%); */ background-image: linear-gradient(270deg, #111 0%, #3c5462 90%); } body.background-04 { background-image: linear-gradient(270deg, #111 0%, #009688 90%); } body.background-05 { background-image: linear-gradient(270deg, #111 0%, #ac1444 90%); } body.background-06 { background-image: linear-gradient(270deg, #111 0%, #795548 90%); } #fortune-tellers { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 1rem; } /* .fortune-teller-profile { grid-template-rows: 30vh; grid-template-columns: 1fr 1fr; grid-template-areas:'picture deck' 'bio bio'; max-width: min-content; margin-block: 1rem; display: grid; overflow: auto; align-self: center; justify-items: center; } */ .fortune-teller-profile { display: flex; justify-content: center; align-items: center; opacity: 0.3; filter: grayscale(); border-radius: 50%; border: 3px solid #fff3; box-shadow: 0 0 20px #fff0; transition: opacity 0.5s allow-discrete, box-shadow 1s; aspect-ratio: 1; position: relative; width: 100%; max-height: 20vh; overflow: hidden; cursor: url("./icons/hand.png") 19 4, default; } .fortune-teller-profile.selected { opacity: 1; filter: grayscale(0); box-shadow: 0 0 20px #ffff; } textarea { background-color: transparent; border: 0; border-right: 1px solid #fff6; font-size: 1rem; min-width: 60lvw; max-width: 80lvw; font-size: clamp(1rem, 5vh, 2rem); color: inherit; } textarea:focus-visible { outline: 0; border-right: 1px solid #fff9; } .fortune-teller-profile p { grid-area: bio; } .fortune-teller-profile .fortune-teller-avatar { display: block; aspect-ratio: 1; height: 100%; border-radius: 50%; } .fortune-teller-profile .fortune-teller-deck-back { display: none; grid-area: deck; border-radius: 10%; } /* .fortune-teller-profile img { display: block; height: 100%; width: auto; } */ .fortune-teller-buttons { display: flex; justify-content: center; align-items: center; } #cards-container { position: absolute; inset: 0; overflow: hidden; } .card { display: flex; justify-content: flex-start; align-items: center; flex-direction: column-reverse; transition: top 0.7s, left 0.7s, rotate 0.5s; transition-timing-function: cubic-bezier(0, -0.28, 0.75, -0.21); width: 512px; height: 768px; background-image: linear-gradient(0deg, #000, #fff); border-radius: 6%; position: absolute; transform: translate(-50%, -50%) scale(var(--card-size)) rotateY(0deg); border: 3px solid wheat; box-shadow: 0 0 10px black; top: 50vh; left: 50lvw; } .card.rotated { transform: translate(-50%, -50%) scale(var(--card-size)) rotateY(90deg); } .card.flipped h2 { display: none; } button { cursor: url("./icons/hand.png") 19 4, default; width: 4rem; height: 4rem; background-color: #3336; border-radius: 50%; border: 0; backdrop-filter: blur(10px); background-image: none; font-size: 2rem; color: white; background-size: 3rem; background-position: center; } button.continue-button { background-image: url(./icons/play.svg); } div.toolbar { display: flex; align-items: center; justify-content: flex-end; padding: 1rem 0; } #settings-button { letter-spacing: 3px; font-size: 1rem; } #close-settings-button { font-size: 1.5rem; color: #fff9; } div.horizontal-buttons { display: flex; justify-content: space-between; } .card h2 { text-align: center; background-image: linear-gradient(0deg, #fff 0%, #fff3 140%); border-radius: 15%; padding: 4px 5px; text-shadow: 0 0 3px #333; color: #111; border: 1px solid #fff6; } body.background-01 .card { background-image: var(--card-effect), url(./images/deck-01.jpg) } body.background-01 .card.flipped { background-image: linear-gradient(45deg, #0006, #fff3 70%), url(./images/deck-01-back.png); } body.background-02 .card { background-image: linear-gradient(45deg, #0006, #fff3 70%), url(./images/deck-02.jpg) } body.background-02 .card.flipped { background-image: linear-gradient(45deg, #0006, #fff3 70%), url('./images/deck-02-back.png'); } body.background-03 .card { background-image: linear-gradient(45deg, #0006, #fff3 70%), url(./images/deck-03.jpg) } body.background-03 .card.flipped { background-image: linear-gradient(45deg, #0006, #fff3 70%), url('./images/deck-03-back.png'); } body.background-05 .card { background-image: linear-gradient(45deg, #0006, #fff3 70%), url(./images/deck-05.jpg) } body.background-05 .card.flipped { background-image: linear-gradient(45deg, #0006, #fff3 70%), url('./images/deck-05-back.png'); } body.background-04 .card { background-image: url(./images/deck-04.jpg) } body.background-04 .card.flipped { background-image: url('./images/deck-04-back.png'); } body.background-06 .card { background-image: url(./images/deck-06.jpg) } body.background-06 .card.flipped { background-image: url('./images/deck-06-back.png'); } body.background-07 .card { background-image: url(./images/deck-07.jpg) } body.background-07 .card.flipped { background-image: url('./images/deck-07-back.png'); } dialog { cursor: url("./icons/hand-soft.png") 19 4, default; font-size: 1rem; backdrop-filter: blur(10px); background-image: linear-gradient(0deg, #fff3, transparent); border-radius: 2rem; border: #fff1 solid 2px; background-color: transparent; padding: 1rem 2rem 2rem 2rem; text-align: center; color: white; text-shadow: 0 0 5px #fffc; } div.tag { position: absolute; bottom: 10px; font-size: 1rem; background-image: linear-gradient(45deg, #CDDC39, #8BC34A); padding: 0.2rem 1rem; border-radius: 1rem; font-family: monospace; color: #333; text-shadow: 0 0 1px #444; } div.tag.human { background-image: linear-gradient(45deg, #FFEB3B, #ff9800); } div.tag.cpu { background-image: linear-gradient(45deg, #2196F3, #00BCD4); } /* DIALOGS */ /* Open state of the dialog */ dialog[open] { opacity: 1; } /* Closed state of the dialog */ dialog { opacity: 0; transition: all 0.7s allow-discrete; } /* Before-open state */ /* Needs to be after the previous dialog[open] rule to take effect, as the specificity is the same */ @starting-style { dialog[open] { opacity: 0; } } /* Transition the :backdrop when the dialog modal is promoted to the top layer */ dialog::backdrop { background-color: rgba(0, 0, 0, 0); transition: all 0.7s allow-discrete; } dialog[open]::backdrop { background-color: rgb(0 0 0 / 25%); } /* This starting-style rule cannot be nested inside the above selector because the nesting selector cannot represent pseudo-elements. */ @starting-style { dialog[open]::backdrop { background-color: rgb(0 0 0 / 0%); } } dialog div { text-align: center; color: white; } #settings div { text-align: left; font-size: 1.3rem; } #settings h2 { font-weight: 400; font-size: 1.2rem; } div.setting { margin: 2rem 0; } div.setting label { display: block; } div.setting input { display: block; font-size: 1.3rem; width: 42ch; background: #fff1; color: #cddc39; padding: 0.5rem 1rem; border: 0; font-family: 'Courier New', Courier, monospace; } /* response dialog */ #response { margin-bottom: 1vh; } div.response-container { grid-template-columns: 2fr 3fr 1fr; align-items: center; max-width: 80lvw; display: grid; } #response-output span { display: inline-block; } @keyframes bounce { 0% { transform: translateY(0); } 50% { transform: translateY(-10px); } 100% { transform: translateY(0); } } #response-output span:nth-child(1) { animation: bounce 3s infinite 0.5s; } #response-output span:nth-child(2) { animation: bounce 3s infinite 1.0s; } #response-output span:nth-child(3) { animation: bounce 3s infinite 1.5s; } div.current-fortune-teller { aspect-ratio: 1; background-size: cover; height: 30vh; display: flex; margin: auto; border-radius: 10%; } body.background-01 div.current-fortune-teller { background-image: url(./images/avatar-01.png); } body.background-02 div.current-fortune-teller { background-image: url(./images/avatar-02.png); } body.background-03 div.current-fortune-teller { background-image: url(./images/avatar-03.png); } body.background-04 div.current-fortune-teller { background-image: url(./images/avatar-04.png); } body.background-05 div.current-fortune-teller { background-image: url(./images/avatar-05.png); } body.background-06 div.current-fortune-teller { background-image: url(./images/avatar-06.png); } body.background-07 div.current-fortune-teller { background-image: url(./images/avatar-07.png); } .mystic-warning { animation: fadeIn 0.5s ease-in-out; } h1::before { content: '✨'; margin-right: 5px; } h1::after { content: '✨'; margin-left: 5px; } @keyframes fadeIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } /* Media query per schermi fino a 768px di larghezza (tipicamente tablet e smartphone in modalità landscape) */ @media screen and (max-width: 768px) { :root { --card-size: 0.4; /* Riduce la dimensione delle carte */ } #fortune-tellers { grid-template-columns: 1fr 1fr; /* Cambia il layout a 2 colonne */ gap: 0.5rem; } .fortune-teller-profile { max-height: 15vh; } dialog { padding: 0.5rem 1rem 1rem 1rem; font-size: 0.9rem; } textarea { min-width: 80lvw; font-size: clamp(0.9rem, 4vh, 1.5rem); } button { width: 3rem; height: 3rem; font-size: 1.5rem; } } /* Media query per schermi fino a 480px di larghezza (tipicamente smartphone in modalità portrait) */ @media screen and (max-width: 480px) { :root { --card-size: 0.3; /* Riduce ulteriormente la dimensione delle carte */ } #fortune-tellers { grid-template-columns: 1fr; /* Cambia il layout a 1 colonna */ } .fortune-teller-profile { max-height: 12vh; } dialog { font-size: 0.8rem; border-radius: 1rem; } div.response-container { grid-template-columns: 1fr; /* Cambia il layout a 1 colonna */ gap: 1rem; } div.current-fortune-teller { height: 20vh; } #settings div { font-size: 1rem; } div.setting input { font-size: 1rem; width: 100%; box-sizing: border-box; } } /* Media query per gestire l'altezza dello schermo su dispositivi molto piccoli */ @media screen and (max-height: 600px) { .fortune-teller-profile { max-height: 25vh; } dialog { max-height: 80vh; overflow-y: auto; } }