.language-switcher{display:flex;gap:8px;align-items:center}.lang-btn{background:transparent;border:2px solid #3498db;color:#3498db;padding:6px 12px;border-radius:20px;font-size:.9rem;font-weight:500;cursor:pointer;transition:all .3s ease;display:flex;align-items:center;gap:4px}.lang-btn:hover,.lang-btn.active{background:#3498db;color:#fff}@media (max-width: 768px){.language-switcher{gap:4px}.lang-btn{padding:4px 8px;font-size:.8rem}}.header{background:#2c3e50;color:#fff;padding:1rem 0;box-shadow:0 2px 4px #0000001a;position:relative}.nav{max-width:1200px;margin:0 auto;padding:0 20px;display:flex;justify-content:space-between;align-items:center}.nav-toggle{display:none;background:none;border:none;color:#fff;font-size:1.5rem;cursor:pointer;z-index:1001;padding:8px;border-radius:4px;transition:background-color .3s}.nav-toggle:hover{background-color:#ffffff1a}.nav-menu{display:flex;list-style:none;margin:0;padding:0;gap:2rem}.nav-menu li a{color:#fff;text-decoration:none;padding:.5rem 1rem;border-radius:4px;transition:background-color .3s;display:block}.nav-menu li a:hover,.nav-menu li a.active{background-color:#ffffff1a}@media (max-width: 768px){.nav-toggle{display:block}.nav-menu{position:absolute;top:100%;left:0;right:0;background:#2c3e50;flex-direction:column;padding:1rem;gap:0;max-height:0;overflow:hidden;opacity:0;transition:all .3s ease;z-index:1000;box-shadow:0 4px 6px #0000001a;border-top:1px solid rgba(255,255,255,.1)}.nav-menu.nav-menu-open{max-height:300px;opacity:1}.nav-menu li{margin-bottom:.5rem}.nav-menu li:last-child{margin-bottom:0}.nav-menu li a{display:block;padding:.75rem 1rem;border-radius:4px;transition:background-color .2s;font-size:1rem}.nav-menu li a:hover{background-color:#ffffff1a}.nav-menu li a.active{background-color:#3498db4d}}@media (max-width: 1024px) and (min-width: 769px){.nav-menu{gap:1rem}.nav-menu li a{padding:.4rem .8rem;font-size:.9rem}}.home-page{max-width:1200px;margin:0 auto}.profile-content{display:flex;align-items:center;gap:30px;margin-bottom:30px}.profile-image{flex-shrink:0}.profile-photo{width:150px;height:150px;border-radius:50%;object-fit:cover;border:4px solid #3498db}.profile-info{flex:1}.profile-info h2{color:#2c3e50;margin-bottom:15px}.profile-info p{color:#666;line-height:1.6}.projects-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px;margin-top:20px}.project-card{background:white;padding:20px;border-radius:8px;box-shadow:0 2px 4px #0000001a;transition:transform .3s ease,box-shadow .3s ease}.project-card:hover{transform:translateY(-5px);box-shadow:0 4px 8px #00000026}.project-card h3{color:#2c3e50;margin-bottom:15px;display:flex;align-items:center;gap:10px}.project-card h3 i{color:#3498db}.project-card p{color:#666;margin-bottom:15px;line-height:1.6}.project-tags{display:flex;flex-wrap:wrap;gap:8px}.project-tags span{background:#ecf0f1;color:#2c3e50;padding:4px 8px;border-radius:4px;font-size:.8rem;font-weight:500}@media (max-width: 768px){.profile-content{flex-direction:column;text-align:center;gap:20px}.profile-photo{width:120px;height:120px}.projects-grid{grid-template-columns:1fr;gap:15px}.project-card{padding:15px}}.mobile-app-page{max-width:1200px;margin:0 auto}.app-content{text-align:center}.app-header{margin-bottom:2rem}.app-header h2{color:#2c3e50;margin-bottom:.5rem;font-size:2.5rem}.app-subtitle{color:#666;font-size:1.2rem;margin-bottom:2rem}.app-showcase{display:flex;flex-wrap:wrap;gap:2rem;margin-bottom:3rem;align-items:flex-start}.app-image{flex:1;min-width:300px}.youtube-shorts-wrapper{position:relative;width:100%;max-width:400px;margin:0 auto;border-radius:12px;overflow:hidden;box-shadow:0 4px 8px #0000001a}.youtube-shorts-wrapper iframe{width:100%;height:600px;border:none;border-radius:12px}.app-description-features{flex:1;min-width:300px;text-align:left}.app-description{margin-bottom:2rem}.app-description p{color:#666;line-height:1.6;font-size:1.1rem}.app-features h3{color:#2c3e50;margin-bottom:1.5rem;font-size:1.5rem}.features-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1rem}.feature-card{background:white;padding:1.5rem;border-radius:8px;box-shadow:0 2px 4px #0000001a;transition:transform .3s ease,box-shadow .3s ease}.feature-card:hover{transform:translateY(-5px);box-shadow:0 4px 8px #00000026}.feature-card h4{color:#2c3e50;margin-bottom:.5rem;display:flex;align-items:center;gap:.5rem}.feature-card h4 i{color:#3498db}.feature-card p{color:#666;line-height:1.5}.app-download{margin-bottom:3rem;padding:2rem;background:#f8f9fa;border-radius:12px}.app-download h3{color:#2c3e50;margin-bottom:1rem;font-size:1.5rem}.app-download p{color:#666;margin-bottom:1.5rem;line-height:1.6}.download-buttons{display:flex;justify-content:center;gap:1rem;flex-wrap:wrap}.download-button{display:inline-flex;align-items:center;gap:.5rem;padding:1rem 2rem;background:#3498db;color:#fff;text-decoration:none;border-radius:8px;font-weight:500;transition:all .3s ease;box-shadow:0 2px 4px #0000001a}.download-button:hover{background:#2980b9;transform:translateY(-2px);box-shadow:0 4px 8px #0003}.download-button.android{background:#34a853}.download-button.android:hover{background:#2d8f47}.button-text{font-size:1rem}@media (max-width: 900px){.app-image,.app-description-features{flex:1 1 100%}.app-showcase{flex-direction:column}}@media (max-width: 768px){.app-header h2{font-size:2rem}.app-subtitle{font-size:1rem}.features-grid{grid-template-columns:1fr}.download-buttons{flex-direction:column;align-items:center}.download-button{width:100%;max-width:300px;justify-content:center}.youtube-shorts-wrapper{max-width:100%}.youtube-shorts-wrapper iframe{height:400px}}@media (max-width: 500px){.youtube-shorts-wrapper,.youtube-shorts-wrapper iframe{border-radius:8px}.youtube-shorts-wrapper iframe{height:300px}.app-download{padding:1.5rem}.feature-card{padding:1rem}}.gpts-page{max-width:1200px;margin:0 auto}.gpts-page p{text-align:center;color:#666;font-size:1.1rem;margin-bottom:3rem;line-height:1.6}.gpts-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:2rem;margin-top:2rem}.gpt-card{background:white;border-radius:12px;padding:1.5rem;box-shadow:0 4px 6px #0000001a;text-decoration:none;color:inherit;transition:all .3s ease;display:block}.gpt-card:hover{transform:translateY(-5px);box-shadow:0 8px 15px #0003}.gpt-card h3{color:#2c3e50;margin-bottom:1rem;font-size:1.3rem;line-height:1.4}.gpt-card p{color:#666;line-height:1.5;margin:0;text-align:left}.gpt-thumb{width:100%;height:200px;object-fit:cover;border-radius:8px;margin-bottom:1rem;box-shadow:0 2px 4px #0000001a}@media (max-width: 768px){.gpts-grid{grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1.5rem}.gpt-card{padding:1.2rem}.gpt-thumb{height:150px}}@media (max-width: 480px){.gpts-grid{grid-template-columns:1fr;gap:1rem}.gpt-card{padding:1rem}.gpt-thumb{height:120px}.gpt-card h3{font-size:1.1rem}.gpts-page p{font-size:1rem;margin-bottom:2rem}}.contact-page{max-width:800px;margin:0 auto}.contact-section{text-align:center;padding:2rem}.contact-section h1{color:#2c3e50;margin-bottom:1rem;font-size:2.5rem}.contact-section>p{color:#666;font-size:1.1rem;margin-bottom:3rem;line-height:1.6}.contact-list{display:flex;flex-direction:column;gap:1.5rem;max-width:500px;margin:0 auto}.contact-item{display:flex;align-items:center;gap:1rem;padding:1.5rem;background:white;border-radius:12px;box-shadow:0 2px 4px #0000001a;transition:transform .3s ease,box-shadow .3s ease}.contact-item:hover{transform:translateY(-3px);box-shadow:0 4px 8px #00000026}.contact-item i{font-size:1.5rem;color:#3498db;width:30px;text-align:center}.contact-item a{color:#2c3e50;text-decoration:none;font-weight:500;font-size:1.1rem;transition:color .3s ease}.contact-item a:hover{color:#3498db}@media (max-width: 768px){.contact-section{padding:1.5rem}.contact-section h1{font-size:2rem}.contact-item{padding:1.2rem}.contact-item a{font-size:1rem}}@media (max-width: 480px){.contact-section{padding:1rem}.contact-section h1{font-size:1.8rem}.contact-section>p{font-size:1rem;margin-bottom:2rem}.contact-list{gap:1rem}.contact-item{padding:1rem;flex-direction:column;text-align:center;gap:.5rem}.contact-item i{font-size:1.3rem}.contact-item a{font-size:.9rem}}.tictactoe-game{max-width:400px;margin:0 auto;text-align:center}.game-status{font-size:1.2rem;font-weight:700;margin-bottom:20px;padding:10px;background:#ecf0f1;border-radius:4px}.board{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;background:#34495e;padding:4px;border-radius:8px;margin-bottom:20px}.board-row{display:contents}.square{width:80px;height:80px;background:white;border:none;font-size:2rem;font-weight:700;cursor:pointer;transition:background-color .3s;display:flex;align-items:center;justify-content:center}.square:hover{background:#ecf0f1}@media (max-width: 768px){.square{width:70px;height:70px;font-size:1.8rem}.game-status{font-size:1.1rem}}@media (max-width: 480px){.tictactoe-game{padding:0 10px}.square{width:60px;height:60px;font-size:1.5rem}.game-header{flex-direction:column;gap:10px}.game-status{font-size:1rem;padding:8px}.reset-button{padding:8px 16px;font-size:.9rem}}@media (max-width: 360px){.square{width:50px;height:50px;font-size:1.3rem}.game-status{font-size:.9rem;padding:6px}.reset-button{padding:6px 12px;font-size:.8rem}}.memory-game{max-width:600px;margin:0 auto;text-align:center}.game-info{display:flex;justify-content:space-around;margin-bottom:20px;padding:10px;background:#ecf0f1;border-radius:4px}.game-info p{margin:0;font-weight:700;color:#2c3e50}.win-message{background:#2ecc71;color:#fff;padding:20px;border-radius:8px;margin-bottom:20px}.win-message h3{color:#fff;margin-bottom:10px}.win-message p{margin-bottom:15px}.memory-board{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:20px;max-width:400px;margin-left:auto;margin-right:auto}.memory-card{aspect-ratio:1;perspective:1000px;cursor:pointer}.card-inner{position:relative;width:100%;height:100%;text-align:center;transition:transform .6s;transform-style:preserve-3d}.memory-card.flipped .card-inner{transform:rotateY(180deg)}.card-front,.card-back{position:absolute;width:100%;height:100%;backface-visibility:hidden;display:flex;align-items:center;justify-content:center;font-size:2rem;border-radius:8px;border:2px solid #34495e}.card-front{background:#3498db;color:#fff;font-weight:700}.card-back{background:white;transform:rotateY(180deg)}@media (max-width: 768px){.memory-board{max-width:350px;gap:6px}.card-front,.card-back{font-size:1.5rem}.game-header{flex-direction:column;gap:10px}.game-info{flex-direction:column;gap:5px}}@media (max-width: 480px){.memory-board{max-width:280px;gap:4px}.card-front,.card-back{font-size:1.2rem;border-width:1px}.memory-game{padding:0 10px}}@media (max-width: 360px){.memory-board{max-width:240px;gap:3px}.card-front,.card-back{font-size:1rem}}.snake-game{max-width:500px;margin:0 auto;text-align:center}.game-board{display:grid;grid-template-columns:repeat(20,1fr);gap:1px;background:#34495e;padding:4px;border-radius:8px;margin-bottom:20px;max-width:400px;margin-left:auto;margin-right:auto}.board-cell{width:20px;height:20px;background:#ecf0f1;border-radius:2px}.snake-head{background:#2ecc71!important;border-radius:4px}.snake-body{background:#27ae60!important;border-radius:2px}.food{background:#e74c3c!important;border-radius:50%}.game-controls{margin-top:20px}.game-controls p{margin-bottom:15px;color:#666;font-size:.9rem}.reset-button{background:#3498db;color:#fff;padding:10px 20px;font-size:1rem;border-radius:4px}@media (max-width: 768px){.game-board{grid-template-columns:repeat(18,1fr);max-width:360px}.board-cell{width:18px;height:18px}.game-header{flex-direction:column;gap:10px}}@media (max-width: 480px){.game-board{grid-template-columns:repeat(15,1fr);max-width:300px}.board-cell{width:15px;height:15px}.snake-game{padding:0 10px}.game-info{padding:8px}.game-info p{font-size:.9rem}}@media (max-width: 360px){.game-board{grid-template-columns:repeat(12,1fr);max-width:240px}.board-cell{width:12px;height:12px}.game-controls p{font-size:.8rem}.reset-button{padding:8px 16px;font-size:.9rem}}.dino-run-game{max-width:500px;margin:0 auto;text-align:center}.game-over{color:#e74c3c!important;font-size:1.2rem}.game-container{margin-bottom:20px}.game-area{position:relative;width:400px;height:200px;margin:0 auto;background:#87CEEB;border:2px solid #2c3e50;border-radius:8px;overflow:hidden}.dino{position:absolute;left:50px;width:40px;height:40px;font-size:2rem;transition:transform .5s ease;z-index:10}.obstacle{position:absolute;width:20px;height:30px;font-size:1.5rem;z-index:5}.ground{position:absolute;bottom:0;left:0;right:0;height:20px;background:#8B4513;border-top:2px solid #654321}.game-controls{display:flex;justify-content:center;gap:10px;margin-top:20px}.start-button,.reset-button,.jump-button{background:#3498db;color:#fff;padding:10px 20px;font-size:1rem;border-radius:4px;border:none;cursor:pointer;transition:background-color .3s}.start-button:hover,.reset-button:hover,.jump-button:hover{background:#2980b9}@media (max-width: 768px){.game-area{width:350px;height:175px}.dino{font-size:1.8rem}.obstacle{font-size:1.3rem}.game-header{flex-direction:column;gap:10px}}@media (max-width: 480px){.game-area{width:300px;height:150px}.dino{font-size:1.5rem;left:30px}.obstacle{font-size:1.1rem}.dino-run-game{padding:0 10px}.game-controls{flex-direction:column;align-items:center}.start-button,.reset-button,.jump-button{width:150px}}@media (max-width: 360px){.game-area{width:250px;height:125px}.dino{font-size:1.3rem;left:25px}.obstacle{font-size:1rem}}.slide-puzzle-game{max-width:500px;margin:0 auto;text-align:center}.puzzle-container{margin-bottom:20px}.puzzle-board{display:inline-block;background:#34495e;padding:8px;border-radius:8px;box-shadow:0 4px 8px #0003}.puzzle-row{display:flex}.puzzle-tile{width:60px;height:60px;margin:2px;background:#3498db;color:#fff;display:flex;align-items:center;justify-content:center;font-size:1.5rem;font-weight:700;border-radius:4px;cursor:pointer;transition:all .3s ease;-webkit-user-select:none;user-select:none}.puzzle-tile:hover{background:#2980b9;transform:scale(1.05)}.puzzle-tile.empty{background:transparent;cursor:default}.puzzle-tile.empty:hover{background:transparent;transform:none}@media (max-width: 768px){.puzzle-tile{width:50px;height:50px;font-size:1.3rem}.game-header{flex-direction:column;gap:10px}}@media (max-width: 480px){.puzzle-tile{width:40px;height:40px;font-size:1.1rem;margin:1px}.puzzle-board{padding:6px}.slide-puzzle-game{padding:0 10px}}@media (max-width: 360px){.puzzle-tile{width:35px;height:35px;font-size:1rem}.puzzle-board{padding:4px}}.sudoku-game{max-width:500px;margin:0 auto;text-align:center}.game-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.back-button{background:#e74c3c;color:#fff;padding:8px 16px;border-radius:4px;font-size:.9rem}.back-button:hover{background:#c0392b}.game-info{margin-bottom:20px;padding:10px;background:#ecf0f1;border-radius:4px}.game-info p{margin:5px 0;font-weight:700;color:#2c3e50}.completion-message{background:#2ecc71;color:#fff;padding:15px;border-radius:8px;margin-top:10px}.completion-message h3{color:#fff;margin-bottom:5px}.completion-message p{color:#fff;margin:0}.difficulty-selector{display:flex;justify-content:center;gap:10px;margin-bottom:20px}.difficulty-btn{background:#bdc3c7;color:#2c3e50;padding:8px 16px;border:none;border-radius:4px;cursor:pointer;transition:all .3s;font-size:.9rem}.difficulty-btn.active{background:#3498db;color:#fff}.difficulty-btn:hover{background:#95a5a6}.difficulty-btn.active:hover{background:#2980b9}.sudoku-container{margin-bottom:20px}.sudoku-board{display:inline-block;background:#2c3e50;padding:8px;border-radius:8px;box-shadow:0 4px 8px #0003}.sudoku-row{display:flex}.sudoku-cell{width:40px;height:40px;border:1px solid #34495e;display:flex;align-items:center;justify-content:center;font-size:1.2rem;font-weight:700;background:white;cursor:pointer;transition:all .3s;-webkit-user-select:none;user-select:none}.sudoku-cell:hover{background:#ecf0f1}.sudoku-cell.selected{background:#3498db;color:#fff}.sudoku-cell.border-bottom{border-bottom:3px solid #2c3e50}.sudoku-cell.border-right{border-right:3px solid #2c3e50}.number-pad{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-bottom:20px;max-width:300px;margin-left:auto;margin-right:auto}.number-btn{background:#3498db;color:#fff;border:none;border-radius:4px;padding:12px;font-size:1.1rem;font-weight:700;cursor:pointer;transition:background-color .3s}.number-btn:hover{background:#2980b9}.clear-btn{background:#e74c3c;grid-column:span 2}.clear-btn:hover{background:#c0392b}.reset-button{background:#3498db;color:#fff;padding:10px 20px;font-size:1rem;border-radius:4px;border:none;cursor:pointer;transition:background-color .3s}.reset-button:hover{background:#2980b9}@media (max-width: 768px){.sudoku-cell{width:35px;height:35px;font-size:1rem}.number-pad{max-width:250px;gap:6px}.number-btn{padding:10px;font-size:1rem}.game-header{flex-direction:column;gap:10px}}@media (max-width: 480px){.sudoku-cell{width:30px;height:30px;font-size:.9rem}.number-pad{max-width:200px;gap:4px}.number-btn{padding:8px;font-size:.9rem}.sudoku-game{padding:0 10px}.difficulty-selector{flex-direction:column;align-items:center}.difficulty-btn{width:100px}}@media (max-width: 360px){.sudoku-cell{width:25px;height:25px;font-size:.8rem}.number-pad{max-width:180px}.number-btn{padding:6px;font-size:.8rem}}.blocksum-game{max-width:96%;margin:0 auto;padding:12px;position:relative}.blocksum-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;flex-wrap:wrap;gap:8px}.blocksum-back{background:#e74c3c;color:#fff;border:none;padding:8px 14px;border-radius:6px;font-size:.9rem;cursor:pointer}.blocksum-back:hover{background:#c0392b}.blocksum-start-screen{text-align:center;padding:24px 20px;max-width:360px;margin:0 auto}.blocksum-start-screen h2{margin:0 0 12px;color:#2c3e50;font-size:1.35rem}.blocksum-start-desc{font-size:.9rem;color:#666;margin-bottom:20px;line-height:1.5}.blocksum-bgm-row{display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:24px}.blocksum-bgm-row span{font-size:.95rem;color:#555}.blocksum-bgm-toggle{padding:6px 14px;border-radius:6px;border:1px solid #bdc3c7;background:#ecf0f1;font-size:.9rem;cursor:pointer}.blocksum-bgm-toggle.on{background:#27ae60;color:#fff;border-color:#27ae60}.blocksum-bgm-toggle.off{background:#95a5a6;color:#fff;border-color:#7f8c8d}.blocksum-start-btn{display:block;width:100%;padding:14px 24px;font-size:1.1rem;font-weight:700;background:#3498db;color:#fff;border:none;border-radius:8px;cursor:pointer}.blocksum-start-btn:hover{background:#2980b9}.blocksum-header h2{margin:0;font-size:1.25rem;color:#2c3e50}.blocksum-score{font-weight:700;font-size:1.1rem;color:#27ae60}.blocksum-timer-wrap{margin-bottom:12px}.blocksum-timer-label{font-size:.9rem;color:#555;margin-bottom:4px}.blocksum-time-num{font-weight:700;color:#2c3e50}.blocksum-gauge-bg{height:12px;background:#ecf0f1;border-radius:6px;overflow:hidden}.blocksum-gauge-fill{height:100%;background:linear-gradient(90deg,#27ae60,#2ecc71);border-radius:6px;transition:width 1s linear}.blocksum-rule{font-size:.85rem;color:#666;margin-bottom:12px;line-height:1.4}.blocksum-grid-wrap{user-select:none;-webkit-user-select:none;touch-action:none}.blocksum-grid{display:grid;gap:5px;background:#34495e;padding:5px;border-radius:10px;aspect-ratio:24 / 18;max-height:78vh}.blocksum-cell{background:#ecf0f1;background-size:contain;background-repeat:no-repeat;background-position:center;border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:clamp(.8rem,2.8vw,1.15rem);font-weight:800;color:#f4d03f;text-shadow:0 0 2px #1a1a1a,0 0 4px #1a1a1a,0 1px 3px rgba(0,0,0,.8),0 2px 4px rgba(0,0,0,.6),1px 1px 0 #8b6914,-1px -1px 0 #8b6914;cursor:pointer;transition:background-color .15s,transform .08s;min-height:0}.blocksum-cell-bubble{background-color:transparent;background-image:url(/assets/bubble.png);background-size:111%;background-position:center}.blocksum-cell-bubble:hover{filter:brightness(1.05)}.blocksum-cell-empty{background:#2c3e50;background-image:none;cursor:default;opacity:.7}.blocksum-cell-selected{background-color:#3498dbd9;background-image:url(/assets/bubble.png);background-size:111%;background-position:center;color:#ffeb3b;text-shadow:0 0 2px #1a252f,0 1px 4px rgba(0,0,0,.7),1px 1px 0 #5d4e0f;transform:scale(1.08);filter:brightness(1.1)}.blocksum-cell-empty.blocksum-cell-selected{background-color:#2980b9;background-image:none}.blocksum-cell-pop{animation:blocksum-bubble-pop .38s ease-out forwards;pointer-events:none}@keyframes blocksum-bubble-pop{0%{transform:scale(1);opacity:1;filter:brightness(1)}35%{transform:scale(1.2);opacity:1;filter:brightness(1.3)}to{transform:scale(1.6);opacity:0;filter:brightness(1.5)}}.blocksum-gameover-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.55);border-radius:12px;display:flex;align-items:center;justify-content:center;z-index:10}.blocksum-gameover-content{text-align:center;padding:32px 24px;background:rgba(255,255,255,.95);border-radius:12px;box-shadow:0 4px 24px #0003}.blocksum-gameover-content h2{margin:0 0 12px;color:#2c3e50;font-size:1.4rem}.blocksum-final-score{font-size:1.5rem;font-weight:700;color:#27ae60;margin-bottom:16px}.blocksum-name-label{font-size:.95rem;color:#555;margin:0 0 8px}.blocksum-name-input{display:block;width:100%;max-width:200px;margin:0 auto 16px;padding:10px 14px;font-size:1rem;border:2px solid #bdc3c7;border-radius:8px;box-sizing:border-box}.blocksum-name-input:focus{outline:none;border-color:#3498db}.blocksum-loading-msg{margin:0;font-size:.95rem;color:#7f8c8d}.blocksum-gameover-buttons{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}.blocksum-btn{padding:12px 24px;border:none;border-radius:8px;font-size:1rem;cursor:pointer}.blocksum-btn-primary{background:#3498db;color:#fff}.blocksum-btn-primary:hover{background:#2980b9}.blocksum-btn-back{background:#95a5a6;color:#fff}.blocksum-btn-back:hover{background:#7f8c8d}.blocksum-btn-leaderboard{background:#27ae60;color:#fff}.blocksum-btn-leaderboard:hover{background:#219a52}@media (max-width: 480px){.blocksum-game{padding:12px}.blocksum-header{flex-direction:column;align-items:stretch}.blocksum-header h2{font-size:1.1rem;text-align:center}.blocksum-grid{max-height:68vh;gap:5px;padding:5px}.blocksum-cell{font-size:clamp(.7rem,3vw,.95rem)}}.leaderboard-page{max-width:96%;margin:0 auto;padding:20px}.leaderboard-box{max-width:420px;margin:0 auto;background:white;border-radius:12px;box-shadow:0 4px 20px #0000001a;padding:24px}.leaderboard-back{display:block;margin:0 0 16px;padding:8px 14px;background:#e74c3c;color:#fff;border:none;border-radius:6px;font-size:.9rem;cursor:pointer}.leaderboard-back:hover{background:#c0392b}.leaderboard-box h2{margin:0 0 12px;font-size:1.4rem;color:#2c3e50}.leaderboard-tabs{display:flex;gap:0;margin-bottom:12px;border-radius:8px;overflow:hidden;border:1px solid #ecf0f1}.leaderboard-tab{flex:1;padding:10px 14px;font-size:.95rem;font-weight:600;border:none;background:#ecf0f1;color:#7f8c8d;cursor:pointer;transition:background .2s,color .2s}.leaderboard-tab:hover{background:#dfe6e9;color:#2c3e50}.leaderboard-tab.active{background:#3498db;color:#fff}.leaderboard-desc{margin:0 0 20px;font-size:.85rem;color:#7f8c8d;line-height:1.4}.leaderboard-list{list-style:none;padding:0;margin:0}.leaderboard-empty{text-align:center;padding:32px 16px;color:#95a5a6;font-size:1rem}.leaderboard-error{color:#e74c3c}.leaderboard-row{display:grid;grid-template-columns:36px 1fr 90px;align-items:center;gap:12px;padding:12px 14px;border-bottom:1px solid #ecf0f1;font-size:1rem}.leaderboard-row:last-child{border-bottom:none}.leaderboard-rank{font-weight:800;color:#3498db;font-size:1.1rem}.leaderboard-name{font-weight:600;color:#2c3e50;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.leaderboard-score{text-align:right;font-weight:700;color:#27ae60;font-size:.95rem}.leaderboard-hint{margin:16px 0 0;font-size:.85rem;color:#95a5a6;text-align:center}.matchline-game{max-width:96%;margin:0 auto;padding:12px;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.matchline-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;flex-wrap:wrap;gap:8px}.matchline-back{background:#e74c3c;color:#fff;border:none;padding:8px 14px;border-radius:6px;font-size:.9rem;cursor:pointer}.matchline-back:hover{background:#c0392b}.matchline-header h2{margin:0;font-size:1.25rem;color:#2c3e50}.matchline-header-right{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.matchline-giveup{padding:6px 12px;font-size:.85rem;font-weight:600;color:#e74c3c;background:transparent;border:1px solid #e74c3c;border-radius:6px;cursor:pointer}.matchline-giveup:hover{background:#e74c3c;color:#fff}.matchline-round{font-size:.95rem;color:#7f8c8d;font-weight:600}.matchline-timer{font-weight:700;font-size:1.1rem;color:#2c3e50;min-width:3ch}.matchline-timer.matchline-timer-low{color:#e74c3c}.matchline-score{font-weight:700;font-size:1.1rem;color:#27ae60}.matchline-rule{font-size:.85rem;color:#666;margin-bottom:12px;line-height:1.4}.matchline-grid-wrap{max-width:400px;margin:0 auto 16px;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;position:relative}.matchline-floating-scores{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:visible}.matchline-score-pop{position:absolute;transform:translate(-50%,-50%);font-size:1.5rem;font-weight:700;color:#ffeb3b;text-shadow:1px 1px 0 #000,-1px -1px 0 #000,1px -1px 0 #000,-1px 1px 0 #000,0 1px 0 #000,0 -1px 0 #000,1px 0 0 #000,-1px 0 0 #000;animation:matchline-score-pop .6s ease-out forwards;white-space:nowrap}@keyframes matchline-score-pop{0%{opacity:0;transform:translate(-50%,-50%) scale(.6)}15%{opacity:1;transform:translate(-50%,-50%) scale(1.2)}to{opacity:0;transform:translate(-50%,-50%) translateY(-28px) scale(1.1)}}.matchline-grid{display:grid;gap:4px;background:#34495e;padding:6px;border-radius:10px;aspect-ratio:1}.matchline-cell{border:none;border-radius:8px;font-size:clamp(1rem,4vw,1.8rem);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:transform .15s,box-shadow .15s;min-height:0;background:#ecf0f1;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.matchline-cell:hover:not(:disabled){transform:scale(1.05);box-shadow:0 2px 8px #0003}.matchline-cell:disabled{cursor:default;opacity:.7}.matchline-cell.matchline-selected{transform:scale(1.1);box-shadow:0 0 0 3px #3498db;background:#dfe6e9}.matchline-cell.matchline-cell-dragging{opacity:.4}.matchline-cell.matchline-pop{animation:matchline-pop .22s ease-out forwards;pointer-events:none}@keyframes matchline-pop{0%{transform:scale(1);opacity:1}50%{transform:scale(1.2);opacity:1}to{transform:scale(0);opacity:0}}.matchline-cell.matchline-fall{animation:matchline-fall .38s cubic-bezier(.34,1.56,.64,1) forwards}@keyframes matchline-fall{0%{transform:translateY(-100%);opacity:.8}to{transform:translateY(0);opacity:1}}.matchline-drag-ghost{position:fixed;width:48px;height:48px;margin-left:-24px;margin-top:-24px;display:flex;align-items:center;justify-content:center;font-size:1.8rem;pointer-events:none;z-index:1000;background:#dfe6e9;border-radius:8px;box-shadow:0 0 0 2px #3498db,0 4px 12px #00000040;animation:matchline-drag-float .15s ease-out}@keyframes matchline-drag-float{0%{transform:scale(.9);opacity:.9}to{transform:scale(1.1);opacity:1}}.matchline-shape-0{color:#e74c3c}.matchline-shape-1{color:#3498db}.matchline-shape-2{color:#2ecc71}.matchline-shape-3{color:#f39c12}.matchline-shape-4{color:#9b59b6}.matchline-cell.matchline-steel{background:linear-gradient(145deg,#5d6d7e,#4a5a6a);color:#2c3e50;cursor:default;box-shadow:inset 0 1px 2px #ffffff1a}.matchline-cell.matchline-steel:hover{transform:none;box-shadow:inset 0 1px 2px #ffffff1a}.matchline-game-over{position:fixed;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.6);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;z-index:500}.matchline-game-over-title{margin:0;font-size:1.5rem;font-weight:700;color:#fff}.matchline-game-over-score{margin:0;font-size:1.25rem;color:#f1c40f}.matchline-game-over .matchline-reset{margin:0}.matchline-game-over-round{margin:0;font-size:1rem;color:#bdc3c7}.matchline-game-over-loading,.matchline-game-over-top10{margin:0;font-size:.95rem}.matchline-game-over-name{display:block;width:100%;max-width:200px;margin:8px auto;padding:10px 12px;font-size:1rem;border:2px solid #ecf0f1;border-radius:8px;text-align:center}.matchline-game-over-name:focus{outline:none;border-color:#3498db}.matchline-game-over-buttons{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:8px}.matchline-game-over-buttons .matchline-reset{margin:0}.matchline-btn-leaderboard{background:#27ae60!important;color:#fff!important}.matchline-btn-leaderboard:hover{background:#219a52!important}.matchline-footer-buttons{margin-top:8px}.matchline-game-over.matchline-game-over-clear .matchline-game-over-title{color:#2ecc71}.matchline-game-over.matchline-game-over-clear .matchline-game-over-score{color:#f1c40f}.matchline-reset{display:block;margin:0 auto;padding:10px 24px;font-size:1rem;background:#3498db;color:#fff;border:none;border-radius:8px;cursor:pointer}.matchline-reset:hover{background:#2980b9}@media (max-width: 480px){.matchline-grid{gap:3px;padding:4px}.matchline-cell{font-size:clamp(.9rem,6vw,1.4rem)}}.game-start-wrap{max-width:96%;margin:0 auto;padding:20px}.game-start-screen{text-align:center;padding:32px 24px;max-width:400px;margin:0 auto;background:white;border-radius:12px;box-shadow:0 4px 12px #0000001a}.game-start-back{display:block;margin:0 auto 20px;padding:8px 16px;background:#e74c3c;color:#fff;border:none;border-radius:6px;font-size:.9rem;cursor:pointer}.game-start-back:hover{background:#c0392b}.game-start-screen h2{margin:0 0 24px;color:#2c3e50;font-size:1.4rem}.game-start-btn{display:block;width:100%;padding:14px 24px;font-size:1.1rem;font-weight:700;background:#3498db;color:#fff;border:none;border-radius:8px;cursor:pointer}.game-start-btn:hover{background:#2980b9}.minigames-page{padding:20px}.minigames-container{max-width:800px;margin:0 auto;text-align:center}.minigames-container h1{color:#2c3e50;margin-bottom:10px}.minigames-container p{color:#666;margin-bottom:30px}.games-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:20px;margin-top:30px}.game-card{background:white;border-radius:12px;padding:20px;box-shadow:0 4px 6px #0000001a;cursor:pointer;transition:transform .3s ease,box-shadow .3s ease;border:2px solid transparent}.game-card:hover{transform:translateY(-5px);box-shadow:0 8px 15px #0003;border-color:#3498db}.game-card h3{color:#2c3e50;margin-bottom:15px;font-size:1.3rem}.game-preview{font-size:3rem;margin:20px 0;min-height:60px;display:flex;align-items:center;justify-content:center}.preview-tictactoe{font-size:2rem;letter-spacing:10px}.preview-memory{font-size:2.5rem;letter-spacing:5px}.preview-snake{font-size:3rem}.preview-dinorun{font-size:2.5rem;letter-spacing:8px}.preview-slidepuzzle{font-size:3rem}.preview-sudoku{font-size:2.5rem}.preview-blocksum{font-size:2rem;font-weight:700;letter-spacing:2px}.preview-leaderboard{font-size:2.5rem}.preview-matchline{font-size:1.8rem;letter-spacing:4px;color:#2c3e50}.game-card p{color:#666;font-size:.9rem;margin:0}@media (max-width: 768px){.games-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:15px}.game-card{padding:15px}.game-preview{font-size:2.5rem;min-height:50px}.preview-tictactoe{font-size:1.8rem;letter-spacing:8px}.preview-memory{font-size:2rem;letter-spacing:4px}.preview-snake{font-size:2.5rem}.preview-dinorun{font-size:2rem;letter-spacing:6px}.preview-slidepuzzle{font-size:2.5rem}.preview-sudoku{font-size:2rem}.preview-blocksum{font-size:1.8rem}.preview-leaderboard{font-size:2.2rem}.preview-matchline{font-size:1.6rem;letter-spacing:3px}}@media (max-width: 480px){.minigames-page{padding:15px}.games-grid{grid-template-columns:1fr;gap:15px}.game-card{padding:15px}.game-preview{font-size:2rem;min-height:40px}.preview-tictactoe{font-size:1.5rem;letter-spacing:6px}.preview-memory{font-size:1.8rem;letter-spacing:3px}.preview-snake{font-size:2rem}.preview-dinorun{font-size:1.8rem;letter-spacing:4px}.preview-slidepuzzle{font-size:2rem}.preview-sudoku{font-size:1.8rem}.preview-blocksum{font-size:1.6rem}.preview-leaderboard{font-size:1.8rem}.preview-matchline{font-size:1.4rem;letter-spacing:2px}.game-card h3{font-size:1.1rem}}@media (max-width: 360px){.minigames-page{padding:10px}.game-card{padding:12px}.game-preview{font-size:1.8rem;min-height:35px}.preview-tictactoe{font-size:1.3rem;letter-spacing:5px}.preview-memory{font-size:1.6rem;letter-spacing:2px}.preview-snake{font-size:1.8rem}.preview-dinorun{font-size:1.6rem;letter-spacing:3px}.preview-slidepuzzle{font-size:1.8rem}.preview-sudoku{font-size:1.6rem}.preview-blocksum{font-size:1.4rem}.preview-leaderboard{font-size:1.6rem}.preview-matchline{font-size:1.2rem;letter-spacing:1px}.game-card h3{font-size:1rem}}@media (max-width: 768px){main{padding:10px}}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.6;color:#333;background-color:#f5f5f5}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.App{min-height:100vh;display:flex;flex-direction:column}main{flex:1;padding:20px;max-width:1200px;margin:0 auto;width:100%}.section{margin-bottom:40px;padding:20px;background:white;border-radius:8px;box-shadow:0 2px 4px #0000001a}h1,h2,h3{margin-bottom:16px;color:#2c3e50}h1{font-size:2.5rem;text-align:center}h2{font-size:2rem}h3{font-size:1.5rem}p{margin-bottom:16px;line-height:1.6}button{cursor:pointer;border:none;border-radius:4px;padding:8px 16px;font-size:1rem;transition:background-color .3s}button:hover{opacity:.8}input,textarea{width:100%;padding:8px 12px;border:1px solid #ddd;border-radius:4px;font-size:1rem}input:focus,textarea:focus{outline:none;border-color:#3498db;box-shadow:0 0 0 2px #3498db33}
