.game-header{width:100%;padding:12px 0;background:linear-gradient(135deg,var(--primary-color) 0%,var(--secondary-color) 100%);color:#fff}.header-content{max-width:800px;margin:0 auto;padding:0 16px;display:flex;flex-direction:column;align-items:center;gap:4px}.game-title{font-size:1.5rem;font-weight:700;margin:0;text-shadow:2px 2px 4px rgba(0,0,0,.2)}.header-info{display:flex;gap:16px;font-size:.8rem;opacity:.9}.current-difficulty,.high-score{display:flex;align-items:center;gap:4px}@media (max-width: 600px){.game-header{padding:10px 0}.header-content{padding:0 12px}.game-title{font-size:1.25rem}.header-info{gap:12px;font-size:.75rem}}@media (max-width: 480px){.game-header{padding:8px 0}.header-content{padding:0 8px;gap:2px}.game-title{font-size:1.1rem}.header-info{gap:8px;font-size:.7rem}}@media (max-height: 500px) and (orientation: landscape){.game-header{padding:6px 0}.header-content{flex-direction:row;justify-content:space-between;gap:12px}.game-title{font-size:1rem}.header-info{font-size:.7rem}}.card{perspective:1000px;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.card-inner{position:relative;width:100%;height:100%;transition:transform .3s ease;transform-style:preserve-3d}.card.flipped .card-inner{transform:rotateY(180deg)}.card-front,.card-back{position:absolute;width:100%;height:100%;backface-visibility:hidden;border-radius:12px;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 6px #0000001a}.card-front{background:linear-gradient(135deg,var(--primary-color) 0%,var(--secondary-color) 100%)}.card-front .card-pattern{width:60%;height:60%;background:#ffffff26;border-radius:8px;display:flex;align-items:center;justify-content:center}.card-front .card-pattern:before{content:"?";font-size:2rem;font-weight:700;color:#fffc}.card-back{background:#fff;transform:rotateY(180deg);border:2px solid #e2e8f0}.card-back .card-image{width:70%;height:70%}.card.matched{pointer-events:none}.card.matched .card-back{border-color:var(--success-color);box-shadow:0 0 15px #48bb7866}.card:hover:not(.flipped):not(.matched){transform:scale(1.05)}.card:active:not(.flipped):not(.matched){transform:scale(.95)}@keyframes matchPulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}.card.matched .card-inner{animation:matchPulse .5s ease}.card.small{--card-size: 80px;width:var(--card-size);height:var(--card-size)}.card.medium{--card-size: 100px;width:var(--card-size);height:var(--card-size)}.card.large{--card-size: 120px;width:var(--card-size);height:var(--card-size)}@media (max-width: 768px){.card.small{--card-size: 70px}.card.medium{--card-size: 80px}.card.large{--card-size: 90px}}@media (max-width: 600px){.card.small,.card.medium,.card.large{--card-size: calc((100vw - 60px)/4) ;width:var(--card-size);height:var(--card-size)}.card-front .card-pattern:before{font-size:1.5rem}.card-front,.card-back{border-radius:10px}}@media (max-width: 480px){.card.small,.card.medium,.card.large{--card-size: calc((100vw - 46px)/4) ;width:var(--card-size);height:var(--card-size)}.card-front .card-pattern:before{font-size:1.25rem}.card-front,.card-back{border-radius:8px;box-shadow:0 2px 4px #0000001a}.card-front .card-pattern{border-radius:6px}}@media (max-width: 360px){.card.small,.card.medium,.card.large{--card-size: calc((100vw - 38px)/4) ;width:var(--card-size);height:var(--card-size)}.card-front .card-pattern:before{font-size:1rem}}@media (max-height: 500px) and (orientation: landscape){.card.small,.card.medium,.card.large{--card-size: calc((100vh - 60px) / 3);width:var(--card-size);height:var(--card-size)}}@media (hover: none){.card:hover:not(.flipped):not(.matched){transform:none}.card:active:not(.flipped):not(.matched){transform:scale(.95)}}.score-board{display:flex;gap:12px;padding:8px 14px;background:var(--surface-color);border-radius:10px;box-shadow:0 2px 10px #00000014}.score-item{display:flex;flex-direction:column;align-items:center;min-width:50px}.score-label{font-size:.65rem;color:var(--text-secondary-color);text-transform:uppercase;letter-spacing:.5px;margin-bottom:2px}.score-value{font-size:1.25rem;font-weight:700;color:var(--text-color)}.score-value.highlight{color:var(--primary-color)}.combo-indicator{display:flex;align-items:center;gap:3px;padding:3px 6px;background:linear-gradient(135deg,var(--primary-color),var(--secondary-color));border-radius:16px;color:#fff;font-size:.75rem;font-weight:600;animation:comboPulse .5s ease}@keyframes comboPulse{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}@media (max-width: 600px){.score-board{gap:10px;padding:6px 10px;border-radius:8px}.score-item{min-width:45px}.score-value{font-size:1.1rem}.combo-indicator{padding:2px 5px;font-size:.7rem}}@media (max-width: 480px){.score-board{gap:8px;padding:5px 8px;border-radius:6px}.score-item{min-width:40px}.score-label{font-size:.55rem}.score-value{font-size:1rem}.combo-indicator{padding:2px 4px;font-size:.65rem;gap:2px}}@media (max-width: 360px){.score-board{gap:6px;padding:4px 6px}.score-value{font-size:.9rem}}@media (max-height: 500px) and (orientation: landscape){.score-board{padding:4px 8px;gap:8px}.score-value{font-size:1rem}}.timer{display:flex;align-items:center;gap:6px;padding:8px 14px;background:var(--surface-color);border-radius:10px;box-shadow:0 2px 10px #00000014}.timer-icon{font-size:1rem}.timer-display{font-size:1.25rem;font-weight:700;font-family:Courier New,monospace;color:var(--text-color);min-width:55px;text-align:center}.timer-display.warning{color:var(--warning-color)}.timer-display.danger{color:var(--error-color);animation:timerPulse 1s ease infinite}@keyframes timerPulse{0%,to{opacity:1}50%{opacity:.5}}@media (max-width: 600px){.timer{padding:6px 10px;border-radius:8px;gap:4px}.timer-icon{font-size:.9rem}.timer-display{font-size:1.1rem;min-width:50px}}@media (max-width: 480px){.timer{padding:5px 8px;border-radius:6px;gap:3px}.timer-icon{font-size:.8rem}.timer-display{font-size:1rem;min-width:45px}}@media (max-width: 360px){.timer{padding:4px 6px}.timer-display{font-size:.9rem;min-width:40px}}@media (max-height: 500px) and (orientation: landscape){.timer{padding:4px 8px}.timer-display{font-size:1rem}}.difficulty-selector{display:flex;flex-direction:column;align-items:center;gap:12px;padding:16px;background:var(--surface-color);border-radius:12px;box-shadow:0 4px 20px #0000001a;width:100%;max-width:100%;box-sizing:border-box}.difficulty-title{font-size:1.25rem;font-weight:700;color:var(--text-color);margin:0}.difficulty-options{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;width:100%}.difficulty-option{display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 8px;background:var(--background-color);border:2px solid transparent;border-radius:10px;cursor:pointer;transition:all .2s ease;-webkit-tap-highlight-color:transparent}.difficulty-option:hover{background:var(--background-color);border-color:var(--primary-color);transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.difficulty-option.active{background:linear-gradient(135deg,var(--primary-color),var(--secondary-color));border-color:transparent}.difficulty-icon{font-size:1.25rem}.difficulty-name{font-size:.875rem;font-weight:600;color:var(--text-color)}.difficulty-desc{font-size:.65rem;color:var(--text-secondary-color);text-align:center;line-height:1.2}@media (max-width: 600px){.difficulty-selector{padding:12px;gap:10px}.difficulty-title{font-size:1.1rem}.difficulty-options{gap:6px}.difficulty-option{padding:8px 6px;border-radius:8px}.difficulty-icon{font-size:1.1rem}.difficulty-name{font-size:.8rem}.difficulty-desc{font-size:.6rem}}@media (max-width: 480px){.difficulty-selector{padding:10px;gap:8px;border-radius:10px}.difficulty-title{font-size:1rem}.difficulty-options{gap:5px}.difficulty-option{padding:6px 4px;border-radius:6px;border-width:1.5px}.difficulty-icon{font-size:1rem}.difficulty-name{font-size:.75rem}.difficulty-desc{font-size:.55rem;display:none}}@media (max-width: 360px){.difficulty-selector{padding:8px}.difficulty-option{padding:5px 3px}.difficulty-icon{font-size:.9rem}.difficulty-name{font-size:.7rem}}@media (max-height: 500px) and (orientation: landscape){.difficulty-selector{flex-direction:row;flex-wrap:wrap;justify-content:center;padding:8px 12px;gap:8px}.difficulty-title{width:100%;text-align:center;font-size:1rem}.difficulty-options{width:auto}}.game-board{display:flex;flex-direction:column;align-items:center;gap:16px;padding:16px;width:100%;box-sizing:border-box}.difficulty-section{width:100%;max-width:100%;margin-bottom:8px}.game-board-header{display:flex;justify-content:space-between;align-items:center;width:100%;max-width:100%;margin-bottom:8px;gap:12px}.cards-container{display:grid;gap:10px;padding:12px;background:var(--surface-color);border-radius:16px;box-shadow:0 4px 20px #0000001a;width:fit-content;margin:0 auto}.cards-container.cols-4{grid-template-columns:repeat(4,1fr)}.cards-container.cols-6{grid-template-columns:repeat(6,1fr)}.game-start-hint{padding:10px 20px;background:linear-gradient(135deg,#667eea1a,#764ba21a);border:2px solid rgba(102,126,234,.3);border-radius:12px;animation:pulse 2s ease infinite}.game-start-hint p{margin:0;color:var(--primary-color);font-weight:600;font-size:.9rem}.game-board-footer{display:flex;gap:12px;margin-top:12px;width:100%;justify-content:center}.game-board-footer .btn{flex:1;max-width:200px}@media (max-width: 768px){.game-board{padding:12px;gap:12px}.cards-container{gap:8px;padding:10px}.cards-container.cols-6{grid-template-columns:repeat(4,1fr)}.game-board-header{gap:8px}}@media (max-width: 600px){.game-board{padding:10px;gap:10px}.cards-container{gap:6px;padding:8px;border-radius:12px;width:calc(100% - 16px)}.cards-container.cols-4,.cards-container.cols-6{grid-template-columns:repeat(4,1fr)}.game-start-hint{padding:8px 16px}.game-start-hint p{font-size:.85rem}}@media (max-width: 480px){.game-board{padding:8px;gap:8px}.cards-container{gap:5px;padding:6px;border-radius:10px;width:calc(100% - 8px)}.cards-container.cols-4,.cards-container.cols-6{grid-template-columns:repeat(4,1fr)}.game-start-hint{padding:6px 12px;border-radius:8px}.game-start-hint p{font-size:.8rem}.game-board-footer{gap:8px;margin-top:8px}.game-board-footer .btn{padding:10px 16px;font-size:.9rem}}@media (max-width: 360px){.game-board{padding:6px;gap:6px}.cards-container{gap:4px;padding:5px;width:calc(100% - 4px)}.cards-container.cols-4,.cards-container.cols-6{grid-template-columns:repeat(4,1fr)}}@media (max-height: 500px) and (orientation: landscape){.game-board{flex-direction:row;flex-wrap:wrap;justify-content:center;align-items:flex-start;padding:8px 16px;gap:8px}.difficulty-section,.game-board-header{width:auto;margin-bottom:0}.cards-container{padding:8px;gap:6px}.game-board-footer{width:auto;margin-top:0}}.modal-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s ease}.modal-content{background:var(--surface-color);border-radius:16px;padding:24px;max-width:90%;max-height:90vh;overflow-y:auto;box-shadow:0 10px 40px #0000004d;animation:slideIn .3s ease}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:12px;border-bottom:1px solid var(--border-color)}.modal-title{font-size:1.25rem;font-weight:600;color:var(--text-color);margin:0}.modal-close{width:32px;height:32px;border:none;background:var(--background-color);border-radius:8px;font-size:1.5rem;color:var(--text-secondary-color);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.modal-close:hover{background:var(--error-color);color:#fff}.modal-body{color:var(--text-color)}@keyframes slideIn{0%{opacity:0;transform:translateY(-20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.result-modal{display:flex;flex-direction:column;align-items:center;gap:20px;padding:16px;min-width:280px;max-width:90vw}.result-celebration{display:flex;flex-direction:column;align-items:center;gap:6px}.celebration-emoji{font-size:3.5rem;animation:bounce 1s ease infinite}.result-title{font-size:1.5rem;font-weight:700;color:var(--text-color);margin:0}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.result-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;width:100%}.stat-item{display:flex;flex-direction:column;align-items:center;padding:12px;background:var(--background-color);border-radius:10px}.stat-label{font-size:.65rem;color:var(--text-secondary-color);text-transform:uppercase;letter-spacing:.5px;margin-bottom:3px}.stat-value{font-size:1.25rem;font-weight:700;color:var(--text-color)}.stat-value.score-value{color:var(--primary-color);font-size:1.75rem}.result-actions{display:flex;gap:10px;width:100%}.result-actions .btn{flex:1}@media (max-width: 480px){.result-modal{gap:16px;padding:12px;min-width:auto;width:95vw}.celebration-emoji{font-size:3rem}.result-title{font-size:1.25rem}.result-stats{gap:8px}.stat-item{padding:10px;border-radius:8px}.stat-label{font-size:.6rem}.stat-value{font-size:1.1rem}.stat-value.score-value{font-size:1.5rem}.result-actions{flex-direction:column;gap:8px}.result-actions .btn{width:100%}}@media (max-height: 500px) and (orientation: landscape){.result-modal{flex-direction:row;flex-wrap:wrap;justify-content:center;padding:12px 16px;gap:12px}.result-celebration{width:auto}.celebration-emoji{font-size:2.5rem}.result-title{font-size:1.1rem}.result-stats{width:auto;grid-template-columns:repeat(4,1fr);gap:8px}.stat-item{padding:8px}.result-actions{width:auto;flex-direction:row}}:root{--primary-color: #667eea;--secondary-color: #764ba2;--background-color: #f5f7fa;--surface-color: #ffffff;--text-color: #2d3748;--text-secondary-color: #718096;--border-color: #e2e8f0;--success-color: #48bb78;--error-color: #f56565;--warning-color: #ed8936;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 24px;--shadow-sm: 0 2px 4px rgba(0, 0, 0, .05);--shadow-md: 0 4px 12px rgba(0, 0, 0, .1);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .15);--transition-fast: .15s ease;--transition-normal: .3s ease;--transition-slow: .5s ease}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,PingFang SC,Microsoft YaHei,sans-serif;background:var(--background-color);color:var(--text-color);line-height:1.5;min-height:100vh;min-height:100dvh;overflow-x:hidden;overscroll-behavior:none}#root{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column}a{color:var(--primary-color);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit;cursor:pointer;border:none;outline:none;transition:all var(--transition-fast);-webkit-tap-highlight-color:transparent;touch-action:manipulation}button:focus-visible{outline:2px solid var(--primary-color);outline-offset:2px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 24px;font-size:1rem;font-weight:600;border-radius:var(--radius-md);transition:all var(--transition-fast);white-space:nowrap}.btn-primary{background:linear-gradient(135deg,var(--primary-color),var(--secondary-color));color:#fff}.btn-primary:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.btn-primary:active{transform:translateY(0) scale(.98)}.btn-secondary{background:var(--surface-color);color:var(--text-color);border:2px solid var(--border-color)}.btn-secondary:hover{border-color:var(--primary-color);color:var(--primary-color)}.btn-secondary:active{transform:scale(.98)}.btn-outline{background:transparent;color:var(--primary-color);border:2px solid var(--primary-color)}.btn-outline:hover{background:var(--primary-color);color:#fff}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none!important}.btn-icon{width:40px;height:40px;padding:0;border-radius:50%;display:flex;align-items:center;justify-content:center}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media (max-width: 480px){.btn{padding:10px 20px;font-size:.9rem;border-radius:var(--radius-sm)}.btn-icon{width:36px;height:36px}}@media (hover: none){.btn:hover{transform:none}.btn:active{transform:scale(.98)}}@keyframes flipIn{0%{transform:rotateY(0)}to{transform:rotateY(180deg)}}@keyframes flipOut{0%{transform:rotateY(180deg)}to{transform:rotateY(0)}}@keyframes matchSuccess{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}@keyframes matchFail{0%,to{transform:translate(0)}20%,60%{transform:translate(-5px)}40%,80%{transform:translate(5px)}}@keyframes popIn{0%{opacity:0;transform:scale(.5)}70%{transform:scale(1.1)}to{opacity:1;transform:scale(1)}}@keyframes popOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.5)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes slideInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}@keyframes blink{0%,to{opacity:1}50%{opacity:.5}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-10px)}60%{transform:translateY(-5px)}}@keyframes celebrate{0%{transform:scale(1) rotate(0)}25%{transform:scale(1.1) rotate(-5deg)}50%{transform:scale(1.2) rotate(5deg)}75%{transform:scale(1.1) rotate(-5deg)}to{transform:scale(1) rotate(0)}}.animate-pop-in{animation:popIn .3s ease forwards}.animate-fade-in{animation:fadeIn .3s ease forwards}.animate-slide-up{animation:slideInUp .3s ease forwards}.animate-pulse{animation:pulse 1s ease infinite}.animate-bounce{animation:bounce 1s ease infinite}.animate-celebrate{animation:celebrate .5s ease}.container{width:100%;max-width:800px;margin:0 auto;padding:0 var(--spacing-md)}.page{min-height:100vh;display:flex;flex-direction:column}.main-content{flex:1;display:flex;flex-direction:column;align-items:center;padding:var(--spacing-lg)}.game-start-hint{padding:var(--spacing-md) var(--spacing-lg);background:#667eea1a;border:1px solid rgba(102,126,234,.3);border-radius:var(--radius-md);margin-bottom:var(--spacing-md);animation:pulse 2s ease infinite}.game-start-hint p{margin:0;color:var(--primary-color);font-weight:500}.game-board-footer{margin-top:var(--spacing-lg);display:flex;gap:var(--spacing-md)}.loading{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:200px;gap:var(--spacing-md)}.loading-spinner{width:40px;height:40px;border:3px solid var(--border-color);border-top-color:var(--primary-color);border-radius:50%;animation:spin 1s linear infinite}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:200px;text-align:center;padding:var(--spacing-xl)}.empty-state-icon{font-size:3rem;margin-bottom:var(--spacing-md)}.empty-state-title{font-size:1.25rem;font-weight:600;color:var(--text-color);margin-bottom:var(--spacing-sm)}.empty-state-desc{color:var(--text-secondary-color)}.message{padding:var(--spacing-md);border-radius:var(--radius-md);margin-bottom:var(--spacing-md)}.message-success{background:#48bb781a;border:1px solid rgba(72,187,120,.3);color:var(--success-color)}.message-error{background:#f565651a;border:1px solid rgba(245,101,101,.3);color:var(--error-color)}.message-warning{background:#ed89361a;border:1px solid rgba(237,137,54,.3);color:var(--warning-color)}@media (max-width: 768px){.main-content{padding:var(--spacing-md)}.container{padding:0 var(--spacing-sm)}}@media (max-width: 480px){.btn{padding:10px 20px;font-size:.875rem}}.page{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;background:var(--background-color);overflow-x:hidden}.main-content{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding:var(--spacing-md);padding-top:var(--spacing-sm);width:100%;box-sizing:border-box}.setup-panel{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-md);width:100%;max-width:100%;padding:0 var(--spacing-sm);box-sizing:border-box}.start-hint{text-align:center;color:var(--text-secondary-color)}.start-hint p{margin:0}.game-panel{width:100%;max-width:800px;display:flex;flex-direction:column;align-items:center}.game-header{background:linear-gradient(135deg,var(--primary-color) 0%,var(--secondary-color) 100%)}@media (max-width: 600px){.game-panel{max-width:100%;padding:0}.main-content{padding:var(--spacing-sm);padding-top:var(--spacing-xs)}}.footer{padding:var(--spacing-lg);text-align:center;color:var(--text-secondary-color);font-size:.875rem}.difficulty-option.active{background:linear-gradient(135deg,var(--primary-color) 0%,var(--secondary-color) 100%);color:#fff}.difficulty-option.active .difficulty-name,.difficulty-option.active .difficulty-desc{color:#fff}.game-board-footer{display:flex;gap:var(--spacing-md);margin-top:var(--spacing-md)}.result-modal{text-align:center}.stat-item{transition:transform .2s ease}.stat-item:hover{transform:scale(1.02)}@media (max-width: 480px){.main-content{padding:var(--spacing-xs)}.setup-panel{gap:var(--spacing-sm)}.game-board-footer{gap:var(--spacing-sm);margin-top:var(--spacing-sm)}}@media (max-height: 500px) and (orientation: landscape){.main-content{padding:var(--spacing-xs)}}
