/* Full-Screen Tablet App */ * { margin: 0; padding: 0; box-sizing: border-box; -webkit-tap-highlight-color: transparent; } html, body { height: 100%; overflow: hidden; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Arial, sans-serif; background: #1a202c; touch-action: manipulation; user-select: none; } .app-fullscreen { width: 100vw; height: 100vh; display: flex; flex-direction: column; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); overflow: hidden; } /* Header */ .app-header { background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%); padding: 10px 15px; display: flex; align-items: center; justify-content: space-between; box-shadow: 0 2px 10px rgba(0,0,0,0.2); flex-shrink: 0; } .icon-btn { background: rgba(255,255,255,0.2); border: none; color: white; width: 44px; height: 44px; border-radius: 10px; display: flex; align-items: center; justify-content: center; font-size: 20px; cursor: pointer; } .header-info { flex: 1; text-align: center; } .level-text { color: white; font-size: 18px; font-weight: 700; } .header-stats { display: flex; gap: 10px; } .stat-item { background: rgba(255,255,255,0.2); padding: 8px 12px; border-radius: 20px; color: white; font-weight: 600; display: flex; align-items: center; gap: 6px; } /* Progress Bar */ .progress-bar-wrapper { background: rgba(255,255,255,0.95); padding: 8px 15px; display: flex; align-items: center; gap: 10px; flex-shrink: 0; } .progress-bar { flex: 1; height: 8px; background: #e9ecef; border-radius: 4px; overflow: hidden; } .progress-fill { height: 100%; background: linear-gradient(90deg, #48bb78, #38a169); width: 0%; transition: width 0.3s ease; } .progress-text { font-size: 14px; font-weight: 600; color: #4a5568; min-width: 50px; } /* Grid Container */ .grid-container-wrapper { flex: 1; display: flex; align-items: center; justify-content: center; padding: 15px; overflow: hidden; background: rgba(255,255,255,0.95); } .crossword-grid { display: grid; background: #a0aec0; padding: 6px; border-radius: 10px; gap: 2px; box-shadow: 0 4px 15px rgba(0,0,0,0.15); } /* Grid Cells */ .grid-cell { background: white; border: 2px solid #cbd5e0; display: flex; align-items: center; justify-content: center; position: relative; font-weight: bold; transition: all 0.2s; cursor: pointer; } .grid-cell.clue-cell { background: linear-gradient(135deg, #4a5568, #2d3748); color: white; padding: 4px; font-size: 10px; font-weight: 600; line-height: 1.2; text-align: left; flex-direction: column; align-items: flex-start; justify-content: flex-start; overflow: hidden; cursor: default; pointer-events: none; } .clue-text { font-size: 10px; line-height: 1.2; word-wrap: break-word; width: 100%; } .arrow { position: absolute; color: #4299e1; font-weight: bold; font-size: 18px; right: 4px; top: 50%; transform: translateY(-50%); } .grid-cell.blocked-cell { background: #2d3748; border-color: #2d3748; cursor: default; } .grid-cell.letter-cell { background: white; font-size: 28px; color: #2d3748; cursor: pointer; } .grid-cell.letter-cell:hover { background: #f7fafc; border-color: #4299e1; } .grid-cell.letter-cell.active { background: #ebf8ff; border-color: #3182ce; box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.4); } .grid-cell.letter-cell.highlighted { background: #fef5e7; border-color: #f39c12; } .grid-cell.letter-cell.correct { background: #c6f6d5; border-color: #48bb78; animation: correctPulse 0.5s ease; } .grid-cell.letter-cell.incorrect { background: #fed7d7; border-color: #f56565; animation: shake 0.4s ease; } @keyframes correctPulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.1); } } @keyframes shake { 0%, 100% { transform: translateX(0); } 25% { transform: translateX(-5px); } 75% { transform: translateX(5px); } } @keyframes wordComplete { 0% { box-shadow: 0 0 0 0 rgba(72, 187, 120, 0.7); } 100% { box-shadow: 0 0 0 20px rgba(72, 187, 120, 0); } } .word-complete { animation: wordComplete 0.8s ease; } /* On-Screen Keyboard */ .keyboard-area { background: #2d3748; padding: 12px 10px 10px 10px; flex-shrink: 0; box-shadow: 0 -2px 10px rgba(0,0,0,0.2); } .keyboard-row { display: flex; justify-content: center; gap: 6px; margin-bottom: 8px; } .key-btn { background: linear-gradient(135deg, #4a5568, #2d3748); border: none; color: white; min-width: 50px; height: 52px; border-radius: 8px; font-size: 20px; font-weight: 600; cursor: pointer; transition: all 0.15s; box-shadow: 0 2px 5px rgba(0,0,0,0.2); display: flex; align-items: center; justify-content: center; } .key-btn:active { transform: scale(0.95); background: linear-gradient(135deg, #667eea, #764ba2); } .key-btn.key-action { background: linear-gradient(135deg, #ed8936, #dd6b20); min-width: 60px; } .key-btn.key-del { background: linear-gradient(135deg, #fc8181, #f56565); min-width: 60px; } .keyboard-actions { display: flex; gap: 8px; margin-top: 10px; justify-content: center; } .action-btn { background: linear-gradient(135deg, #48bb78, #38a169); border: none; color: white; padding: 14px 28px; border-radius: 10px; font-size: 16px; font-weight: 600; cursor: pointer; box-shadow: 0 3px 8px rgba(0,0,0,0.2); display: flex; align-items: center; gap: 8px; transition: all 0.2s; } .action-btn:active { transform: scale(0.97); } .action-btn.secondary { background: linear-gradient(135deg, #667eea, #764ba2); } /* Side Menu */ .side-menu { position: fixed; top: 0; left: -300px; width: 300px; height: 100vh; background: white; box-shadow: 2px 0 15px rgba(0,0,0,0.3); transition: left 0.3s ease; z-index: 1000; } .side-menu.active { left: 0; } .menu-header { background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%); color: white; padding: 20px; display: flex; justify-content: space-between; align-items: center; } .menu-header h3 { font-size: 20px; } .close-menu { background: none; border: none; color: white; font-size: 24px; cursor: pointer; } .menu-items { padding: 15px 0; } .menu-item { display: flex; align-items: center; gap: 15px; padding: 18px 20px; border: none; background: none; width: 100%; text-align: left; cursor: pointer; font-size: 16px; transition: background 0.2s; } .menu-item:active { background: #f8f9fa; } .menu-item i { width: 24px; color: #4facfe; font-size: 20px; } /* Modal */ .modal { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.7); z-index: 2000; justify-content: center; align-items: center; } .modal.active { display: flex; } .modal-content { background: white; border-radius: 20px; padding: 40px; text-align: center; max-width: 450px; width: 90%; box-shadow: 0 10px 40px rgba(0,0,0,0.4); } .success-icon { font-size: 80px; color: #48bb78; margin-bottom: 20px; animation: bounce 1s ease; } @keyframes bounce { 0%, 20%, 50%, 80%, 100% { transform: translateY(0); } 40% { transform: translateY(-20px); } 60% { transform: translateY(-10px); } } .modal-content h2 { color: #2d3748; margin-bottom: 12px; font-size: 28px; } .modal-content p { color: #4a5568; margin-bottom: 24px; font-size: 18px; } .btn-primary { background: linear-gradient(135deg, #48bb78, #38a169); color: white; border: none; border-radius: 12px; padding: 16px 32px; cursor: pointer; font-weight: 600; font-size: 18px; box-shadow: 0 4px 12px rgba(72, 187, 120, 0.4); } .btn-primary:active { transform: scale(0.98); } /* Toast Notification */ .toast { position: fixed; top: 80px; left: 50%; transform: translateX(-50%); background: rgba(0,0,0,0.9); color: white; padding: 14px 28px; border-radius: 25px; font-size: 16px; font-weight: 600; z-index: 9999; animation: toastFade 2.5s ease; box-shadow: 0 4px 15px rgba(0,0,0,0.3); } @keyframes toastFade { 0%, 100% { opacity: 0; transform: translateX(-50%) translateY(-10px); } 15%, 85% { opacity: 1; transform: translateX(-50%) translateY(0); } }