body { font-family: 'Roboto', sans-serif; background-color: #f9f9f9; margin: 0; padding: 0; } .card1 { background: #fff; width: 80vw; margin: 4vh auto; padding: 2vw; border: 10px solid var(--main-accent-color); border-radius: 1vw; box-shadow: 0 0.4vw 0.8vw rgba(0, 0, 0, 0.6); position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } .content-container { display: flex; flex-direction: row; gap: 2vw; flex-wrap: wrap; justify-content: center; align-items: center; } .image-container { flex: 1 1 300px; text-align: center; } .quiz-image { width: 100%; height: auto; border-radius: 10px; } .description-container { flex: 1 1 300px; } h2 { font-size: 2vw; color: #006780; margin-bottom: 1vw; font-weight: 800; } .description-container p { font-size: 1.2vw; text-align: justify; margin-bottom: 2vw; } .submit-button { font-size: 1.2vw; padding: 0.8vw 2vw; background-color: #006780; color: white; border: none; border-radius: 0.5vw; cursor: pointer; font-weight: bold; } .submit-button:hover { background-color: #bdc3c7; box-shadow: 0 12px 16px rgba(0,0,0,0.24), 0 17px 50px rgba(0,0,0,0.19); } .submit-button:disabled { background-color: #ccc; cursor: not-allowed; } @media (max-width: 768px) { .content-container { flex-direction: column; } h2 { font-size: 5vw; } .description-container p { font-size: 3.5vw; } .submit-button { font-size: 3.5vw; padding: 3vw 6vw; height: auto; margin-top: 2vw; } } @media (max-width: 480px) { .card1 { padding: 5vw; } .submit-button { width: 100%; font-size: 4vw; } } .game-screen { height: 71vh; display: flex; flex-direction: column; justify-content: space-evenly; background: #fff; width: 85vw; margin: 4vh auto; padding: 2vw; border: 10px solid var(--main-accent-color); border-radius: 1vw; box-shadow: 0 0.4vw 0.8vw rgba(0, 0, 0, 0.6); position: absolute; top: 52%; left: 50%; transform: translate(-50%, -50%); } .game-content { display: flex; justify-content: space-between; gap: 2rem; align-items: center; } .audio-card, .input-card { width: 50%; height: 20vw; padding: 4rem; background-color: #deefef; border-radius: 8px; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); text-align: center; display: flex; flex-direction: column; justify-content: space-between; align-items: center; } .input-card { display: flex; flex-direction: column; justify-content: space-between; align-items: center; padding-bottom: 1rem; } .input-wrapper { width: 100%; display: flex; flex-direction: column; gap: 1rem; align-items: center; } .input-wrapper input { width: 80%; font-weight: bold; padding: 1rem; border-radius: 8px; border: 2px solid #007bff; font-size: 1.2rem; text-align: center; transition: border-color 0.3s; } .input-wrapper input:disabled { background-color: #e0e0e0; color: #7a7a7a; border-color: #bdbdbd; cursor: not-allowed; opacity: 0.8; } .input-wrapper input.correct { border: 2px solid #4caf50 !important; background-color: #e8f5e9; } .input-wrapper input.error { border: 2px solid #f44336 !important; background-color: #ffebee; } .error-message { color: #ff4d4d; font-weight: bold; font-size: 1.1rem; margin-top: 0.5rem; text-align: center; } .action-buttons { width: 100%; display: flex; justify-content: space-between; margin-top: 0.5rem; padding: 0 1rem; align-items: center; } .left-buttons { display: flex; gap: 10px; } .right-button { margin-left: auto; } .action-buttons .btn { padding: 0.8rem 1.5rem; font-size: 1rem; border-radius: 8px; cursor: pointer; transition: background-color 0.3s; } .info-btn { background-color: #f8c102; color: white; font-weight: bold; } .info-btn:hover { background-color: #e6a500; } .next-btn { background-color: #006780; color: white; font-weight: bold; } .next-btn:hover { background-color: #004d5c; } .next-btn:disabled { background-color: #cccccc; cursor: not-allowed; } .generate-buttons { display: flex; gap: 10px; } .generate-btn { background-color: #006780; color: white; border: none; padding: 15px 32px; font-size: 1.2vw; border-radius: 0.5vw; cursor: pointer; transition: background-color 0.3s, transform 0.3s; font-weight: bold; } .generate-btn:disabled { background-color: #cccccc !important; color: #666666; cursor: not-allowed; opacity: 0.7; box-shadow: none; transition: none; } .extra-btn { background-color: #ff9800; color: white; padding: 0.8rem 1.5rem; font-size: 1rem; border-radius: 8px; cursor: pointer; transition: background-color 0.3s; border: none; } .extra-btn:hover { background-color: #e68900; } @media (max-width: 768px) { .game-content { flex-direction: column; align-items: center; } .audio-card, .input-card { width: 90%; height: auto; } .submit-btn, .action-buttons { width: 90%; } .action-buttons { flex-direction: column; gap: 0.5rem; } } .popup-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5); display: flex; justify-content: center; align-items: center; z-index: 20; } .popup-content { background-color: #ffffff; padding: 2vw; border-radius: 8px; text-align: center; border: 10px solid var(--main-accent-color); max-width: 50vw; } .popup-content p { font-size: 1.3vw; margin-bottom: 2vw; color: #004d5c; font-weight: bold; } @keyframes fadeInCenter { 0% { opacity: 0; transform: translateY(50px); } 100% { opacity: 1; transform: translateY(0); } } .game-header { position: relative; width: 100%; display: flex; justify-content: center; align-items: center; padding-bottom: 1rem; } .back-btn { left: 0; top: 40%; width: 6vw; } .game-title { font-size: 2vw; color: #004d5c; margin: 0; text-align: center; } .info-btn:disabled { background-color: #b0bec5; color: #757575; cursor: not-allowed; opacity: 0.6; } .audio-card--kids { --primary: #006780; --accent: #009688; --soft: #deefef; --bar: rgba(0, 103, 128, 0.28); --bar-strong: rgba(0, 103, 128, 0.65); background: var(--soft); padding: 2rem; border-radius: 14px; border: 3px solid var(--accent); position: relative; } .ac-header { width: 100%; display: flex; justify-content: center; margin-bottom: 1rem; } .ac-generate { border-radius: 999px; font-weight: 700; min-width: 230px; display: inline-flex; align-items: center; gap: 10px; text-align: center; display: flex; justify-content: center; } .spinner { width: 16px; height: 16px; display: inline-block; border: 3px solid #fff; border-top-color: transparent; border-radius: 50%; animation: spin 0.8s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } .ac-player { display: grid; grid-template-rows: auto auto auto auto; gap: 1rem; place-items: center; padding: 1rem 0 0.5rem; } .ac-player.is-disabled { opacity: 0.6; filter: grayscale(0.2); } .play-btn { position: relative; width: 65px; height: 65px; border-radius: 50%; border: none; background: var(--primary); color: #fff; cursor: pointer; box-shadow: 0 8px 20px rgba(0,0,0,0.18); display: grid; place-items: center; transition: transform 0.12s ease, box-shadow 0.2s ease, background 0.3s ease; outline: none; } .play-btn:disabled { cursor: not-allowed; opacity: 0.7; } .play-btn:hover:not(:disabled) { transform: translateY(-2px) scale(1.02); } .play-btn:active:not(:disabled) { transform: translateY(0) scale(0.98); } .play-btn .icon { width: 40px; height: 40px; fill: #fff; } .play-btn .pulse { position: absolute; inset: -8px; border-radius: 50%; border: 2px solid var(--primary); opacity: 0.18; transform: scale(0.9); } .ac-player.is-playing .play-btn .pulse { animation: pulse 1.6s ease-out infinite; } @keyframes pulse { 0% { transform: scale(0.9); opacity: 0.22; } 70% { transform: scale(1.25); opacity: 0; } 100% { transform: scale(1.25); opacity: 0; } } .wave-shell { display: flex; align-items: flex-end; justify-content: center; gap: 6px; height: 46px; width: 80%; max-width: 420px; } .wave-shell .bar { width: 6px; height: 16px; background: var(--bar); border-radius: 4px; animation: wave 1s ease-in-out infinite; animation-play-state: paused; } .ac-player.is-playing .wave-shell .bar { animation-play-state: running; } @keyframes wave { 0%, 100% { height: 12px; background: var(--bar); } 50% { height: 38px; background: var(--bar-strong); } } .timeline { position: relative; height: 10px; width: 80%; max-width: 520px; background: #e9f3f3; border-radius: 999px; overflow: hidden; border: 1px solid rgba(0,0,0,0.06); } .timeline.is-disabled { opacity: 0.5; } .timeline .progress { height: 100%; width: 0%; background: linear-gradient(90deg, var(--primary), var(--accent)); border-radius: 999px 0 0 999px; transition: width 0.15s linear; } .time { width: 80%; max-width: 520px; display: flex; justify-content: space-between; font-weight: 700; color: #004d5c; } .ac-hint { font-size: 0.95rem; color: #004d5c; background: #ffffffa6; border: 1px dashed var(--accent); padding: 8px 12px; border-radius: 10px; } @media (max-width: 768px) { .play-btn { width: 84px; height: 84px; } .play-btn .icon { width: 34px; height: 34px; } .wave-shell { width: 92%; } .timeline, .time { width: 92%; } } .kid-panel { --primary: #006780; --accent: #009688; --soft: #deefef; background: var(--soft); border: 3px solid var(--accent); border-radius: 14px; padding: 1.2rem 1.4rem 1.4rem; display: flex; flex-direction: column; gap: 0.9rem; position: relative; } .kp-top { display: flex; align-items: center; justify-content: space-between; } .kp-title { margin: 0; font-size: 1.25rem; color: #004d5c; font-weight: 800; } .kp-attempts .heart { font-size: 1.15rem; margin-left: 6px; transition: opacity 0.25s ease, transform 0.25s ease; } .kp-attempts .heart.is-off { opacity: 0.25; transform: scale(0.88); } .kp-input-wrap { position: relative; display: grid; place-items: center; } .kp-input { width: 100%; font-weight: 700; padding: 0.95rem 1rem; border-radius: 10px; border: 2px solid var(--primary); font-size: 1.15rem; text-align: center; background: #fff; box-shadow: 0 6px 18px rgba(0, 0, 0, 0.06); transition: transform 0.1s ease, box-shadow 0.2s ease, border-color 0.3s ease; caret-color: var(--primary); } .kp-input:focus { outline: none; transform: translateY(-1px); box-shadow: 0 10px 24px rgba(0, 0, 0, 0.1); border-color: var(--accent); } .kp-input.correct { border-color: #4caf50 !important; background: #e8f5e9; } .kp-input.error { border-color: #f44336 !important; background: #ffebee; } .ok-badge { position: absolute; right: 8%; top: 50%; transform: translateY(-50%) scale(0.6); animation: okPop 0.6s ease forwards; pointer-events: none; } .ok-icon { width: 42px; height: 42px; display: block; } .ok-icon circle { fill: rgba(0, 103, 128, 0.12); stroke: var(--primary); stroke-width: 2; } .ok-icon path { fill: none; stroke: #2e7d32; stroke-width: 3; stroke-linecap: round; stroke-linejoin: round; } @keyframes okPop { 0% { transform: translateY(-50%) scale(0); opacity: 0; } 60% { transform: translateY(-50%) scale(1.08); opacity: 1; } 100% { transform: translateY(-50%) scale(1); opacity: 1; } } .kid-panel.is-shake .kp-input { animation: kpShake 0.35s ease; } @keyframes kpShake { 0%, 100% { transform: translateX(0); } 25% { transform: translateX(-6px); } 50% { transform: translateX(6px); } 75% { transform: translateX(-4px); } } .kp-submit { width: 44%; margin: 0 auto; font-weight: 800; letter-spacing: 0.3px; font-size: 1.2vw; } .info-panel { background: #ffffffd9; border: 1px dashed var(--accent); border-radius: 12px; padding: 0.75rem 1rem; display: flex; flex-direction: column; gap: 0.65rem; } .info-line { display: grid; grid-template-columns: auto 1fr; align-items: start; gap: 0.6rem; } .info-chip { background: var(--primary); color: #fff; font-weight: 700; font-size: 0.85rem; padding: 0.25rem 0.55rem; border-radius: 999px; white-space: nowrap; } .info-text { margin: 0; color: #004d5c; line-height: 1.35rem; font-size: 0.98rem; } @media (max-width: 768px) { .kp-title { font-size: 1.05rem; } .kp-input { width: 92%; font-size: 1.05rem; } .ok-badge { right: 4%; } .kp-submit { width: 92%; } } .action-bar { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-top: 10px; } .action-bar .left-buttons { display: flex; gap: 10px; flex-wrap: wrap; } .py-btn { background-color: #006780; color: #ffffff; border: none; padding: 15px 32px; font-size: 1.2vw; border-radius: 0.5vw; cursor: pointer; transition: background-color 0.3s, transform 0.3s; font-weight: bold; display: inline-flex; align-items: center; gap: 10px; line-height: 1; } .py-btn:hover:not(:disabled) { background-color: #18788f; transform: scale(1.05); } .py-btn:active:not(:disabled) { transform: scale(0.98); } .py-btn:disabled { opacity: 0.55; cursor: not-allowed; transform: none; } .py-btn:focus-visible { outline: 3px solid #94c7d6; outline-offset: 2px; } .py-btn .btn__icon { display: inline-block; transform: translateY(0); transition: transform 0.25s ease; } .py-btn:hover:not(:disabled) .btn__icon { transform: translateY(-2px); } @media (max-width: 768px) { .py-btn { font-size: 16px; border-radius: 10px; padding: 12px 22px; } } .user-guide-close-icon { top: -5.4vw; right: -3.5vw; } .left-illustration { position: absolute; left: -2vw; top: 50%; transform: translateY(-50%); width: 19vw; height: auto; z-index: 1; pointer-events: none; filter: none !important; image-rendering: auto; image-rendering: -webkit-optimize-contrast; image-rendering: crisp-edges; } @media (max-width: 768px) { .left-illustration { width: 170px; left: 8px; } }