.puzzle-page{flex-direction:column;max-width:1200px;height:100dvh;margin:0 auto;display:flex;overflow:hidden}.controls{flex-wrap:wrap;flex-shrink:0;justify-content:center;gap:clamp(3px,1.2vw,6px);padding:0 clamp(6px,2.5vw,12px) clamp(6px,1.5vw,8px);display:flex}.timer{background-color:var(--surface-2);border-radius:50px;justify-content:center;align-items:center;height:clamp(28px,8vw,36px);padding:0 clamp(6px,2.5vw,12px);display:flex;box-shadow:0 2px 10px #0000000d}.timer-icon{font-size:clamp(.7rem,1.8vw,.85rem)}.timer-text{color:var(--text-color);text-align:center;min-width:clamp(40px,10vw,48px);font-size:clamp(.75rem,2vw,.95rem);font-weight:600;display:block}.control-btn{background-color:var(--surface-2);color:var(--text-color);cursor:pointer;border:2px solid #3a3a3a;border-radius:50px;justify-content:center;align-items:center;height:clamp(28px,8vw,36px);padding:0 clamp(6px,2.5vw,12px);font-size:clamp(.6rem,1.7vw,.75rem);font-weight:600;display:flex;position:relative}.control-btn.primary{background-color:var(--primary-color);color:var(--button-text)}.control-btn.disabled{opacity:.5;cursor:not-allowed}.control-btn.active{background-color:#ffd071;border-color:#ffd071}.game-area{flex-direction:column;flex:1;min-height:0;padding:0 12px;display:flex;overflow:hidden}.grid-container{background-color:var(--surface-2);border-radius:15px;flex-direction:column;flex:1;justify-content:center;align-items:center;min-height:0;padding:8px;display:flex;position:relative;box-shadow:0 2px 10px #0000000d}.sudoku-grid{background-color:var(--primary-color);aspect-ratio:1;box-sizing:border-box;border:5px solid #3a3a3a;border-radius:15px;grid-template-columns:repeat(9,1fr);gap:0;width:min(100%,700px);max-height:100%;margin:auto;display:grid;overflow:hidden}.sudoku-grid.grid-6x6{grid-template-columns:repeat(6,1fr)}.cell{aspect-ratio:1;background-color:var(--surface-2);cursor:pointer;color:var(--text-color);touch-action:manipulation;border-right:1px solid var(--border-color);border-bottom:1px solid var(--border-color);border-top:none;border-left:none;justify-content:center;align-items:center;font-size:1.2rem;font-weight:600;transition:all .2s;display:flex;position:relative}.cell.group-complete{animation:1s ease-in-out groupComplete}@keyframes groupComplete{0%,to{background-color:var(--surface-2);box-shadow:inset 0 0 #4caf5000}50%{background-color:#f1f8e9;box-shadow:inset 0 0 20px #4caf5066}}.cell.selected{z-index:1;background-color:#ffd071}.cell.highlighted{background-color:#ffe8b3}.cell.same-number{background-color:#a3d5ff}.cell.given{background-color:var(--surface-3);color:#1a1a1a;font-weight:700}.cell.error{color:#c62828;background-color:#ffcdd2}.cell-value{-webkit-user-select:none;user-select:none;z-index:1;font-size:1.2rem;font-weight:600;position:relative}.cell.given .cell-value{font-weight:700}.cell-notes{pointer-events:none;grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(3,1fr);gap:0;padding:2px;display:grid;position:absolute;inset:0}.note{color:var(--text-muted);justify-content:center;align-items:center;font-size:.5rem;font-weight:500;display:flex}.mobile-keyboard{background-color:var(--surface-2);flex-shrink:0;display:none;box-shadow:0 -2px 10px #0000001a}.keyboard-mode-toggle{background-color:var(--card-background);border-bottom:1px solid var(--border-color);gap:clamp(6px,1.5vw,8px);padding:clamp(6px,1.5vw,8px) clamp(8px,2.5vw,12px);display:flex}.mode-btn{background-color:var(--surface-2);border:2px solid var(--border-color);color:var(--text-muted);cursor:pointer;border-radius:8px;flex:1;padding:clamp(8px,2vw,10px);font-size:clamp(.7rem,2vw,.85rem);font-weight:600;transition:all .2s}.mode-btn.active{background-color:var(--primary-color);color:var(--button-text);border-color:var(--text-color)}.keyboard-keys{padding:clamp(6px,1.5vw,8px)}.keyboard-row{justify-content:center;gap:clamp(4px,1.2vw,6px);margin-bottom:clamp(4px,1.2vw,6px);display:flex}.keyboard-row .key{flex:1}.keyboard-row:last-child{margin-bottom:0}.key{background-color:var(--card-background);border:1px solid var(--border-color);min-width:clamp(38px,10vw,42px);height:clamp(44px,12vw,52px);color:var(--text-color);cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none;border-radius:clamp(6px,1.5vw,8px);justify-content:center;align-items:center;max-width:clamp(50px,13vw,60px);font-size:clamp(1.1rem,3vw,1.3rem);font-weight:600;transition:all .15s;display:flex}.key:active{background-color:var(--primary-color);color:var(--button-text);transform:scale(.95)}.key.pressed{background-color:var(--primary-color);color:var(--button-text);transition:none}.key.erase{font-size:clamp(.9rem,2.5vw,1.1rem)}.key.disabled{opacity:.3;pointer-events:none}.puzzle-page .loading-spinner{justify-content:center;align-items:center;width:100%;height:100%;min-height:300px;display:flex}.puzzle-page .loading-spinner.hidden{display:none}.puzzle-page .spinner{border:5px solid var(--border-color);border-top-color:var(--text-color);border-radius:50%;width:50px;height:50px;animation:1s linear infinite sudoku-spin}@keyframes sudoku-spin{to{transform:rotate(360deg)}}.modal-overlay{z-index:1000;background-color:#00000080;justify-content:center;align-items:center;display:none;position:fixed;inset:0}.modal-overlay.active{display:flex}.modal-content{background-color:var(--surface-2);text-align:center;border-radius:20px;max-width:400px;margin:0 20px;padding:35px;position:relative;box-shadow:0 5px 30px #0000004d}.modal-close{background-color:var(--surface-3);cursor:pointer;width:30px;height:30px;color:var(--text-muted);border:none;border-radius:50%;justify-content:center;align-items:center;font-size:1.2rem;transition:all .3s;display:flex;position:absolute;top:15px;right:15px}.modal-close:hover{background-color:var(--surface-4);color:var(--text-color)}.modal-content h2{color:var(--text-color);margin-bottom:15px;font-size:1.8rem}.stats-grid{grid-template-columns:1fr 1fr;gap:20px;margin:25px 0;display:grid}.stat-value{color:var(--text-color);font-size:1.8rem;font-weight:700}.stat-label{color:var(--text-muted);margin-top:5px;font-size:.85rem}.modal-buttons{flex-direction:column;gap:10px;display:flex}.modal-buttons button{cursor:pointer;border:2px solid #3a3a3a;border-radius:50px;width:100%;padding:12px;font-size:.95rem;font-weight:600}.landscape-overlay{background-color:var(--background-color,#f0ece4);z-index:10000;flex-direction:column;justify-content:center;align-items:center;gap:28px;display:none;position:fixed;inset:0}@media (orientation:landscape){.puzzle-page.touch-device .landscape-overlay{display:flex}}.landscape-icon{color:#3a3a3a;width:110px;height:110px;animation:2.2s ease-in-out infinite tiltToPortrait}.landscape-icon svg{width:100%;height:100%}@keyframes tiltToPortrait{0%{transform:rotate(90deg)}40%{transform:rotate(90deg)}70%{transform:rotate(0)}85%{transform:rotate(0)}to{transform:rotate(90deg)}}.landscape-message{color:#3a3a3a;text-align:center;letter-spacing:.01em;max-width:280px;font-size:clamp(1rem,2.5vw,1.25rem);font-weight:600;line-height:1.6}.sudoku-inline-report-link-wrap{flex-shrink:0;justify-content:center;margin-top:8px;display:flex}.sudoku-inline-report-link{font-size:.82rem}@media (min-width:769px){.puzzle-page{padding:20px}.controls{gap:15px;padding:0 40px 8px}.control-btn{padding:0 20px;font-size:.9rem}.timer{padding:0 18px}.timer-text{min-width:55px;font-size:1rem}.game-area{padding:0 40px}.puzzle-page:not(.touch-device) .grid-container{flex:none;max-width:760px;margin:0 auto;padding:30px}.puzzle-page:not(.touch-device) .sudoku-inline-report-link-wrap{margin:0;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.puzzle-page:not(.touch-device) .sudoku-grid{width:min(100vw - 160px,100vh - 300px,700px)}.cell,.cell-value{font-size:1.8rem}.note{font-size:.65rem}}.puzzle-page.touch-device .mobile-keyboard{z-index:100;width:100%;padding-bottom:env(safe-area-inset-bottom,0);display:block;position:fixed;bottom:0;left:0;right:0}.puzzle-page.touch-device{--kb-row-h:clamp(44px,12vw,80px);--kb-chrome-h:clamp(64px,12vw,96px);--kb-h:calc(var(--kb-row-h)*2 + var(--kb-chrome-h));--grid-pad:clamp(8px,2vw,14px);padding-bottom:calc(var(--kb-h) + env(safe-area-inset-bottom,0) + clamp(6px,1.5vw,12px))}.puzzle-page.touch-device .game-area{flex-direction:column;flex:1;min-height:0;padding:0 4px;display:flex;position:relative}.puzzle-page.touch-device .grid-container{padding:var(--grid-pad);box-sizing:border-box;border-radius:12px;flex:1;justify-content:center;align-items:center;min-height:0;display:flex;container-type:size}.puzzle-page.touch-device .sudoku-grid{--avail-h:calc(100dvh - var(--kb-h) - 130px);width:min(calc(100vw - 20px - (var(--grid-pad)*2)),calc(var(--avail-h) - (var(--grid-pad)*2)));max-width:none;max-height:none}@supports (width:1cqw){.puzzle-page.touch-device .sudoku-grid{width:min(100cqw,100cqh);max-width:100%;max-height:100%}}.puzzle-page.touch-device .cell,.puzzle-page.touch-device .cell-value{font-size:clamp(1.2rem,5vw,2rem)}.puzzle-page.touch-device .note{font-size:clamp(.35rem,1.5vw,.6rem)}.puzzle-page.touch-device .controls{gap:clamp(4px,1.5vw,10px);padding:0 8px clamp(6px,1.5vw,10px)}.puzzle-page.touch-device .timer{height:clamp(32px,7vw,48px);padding:0 clamp(8px,2.5vw,16px)}.puzzle-page.touch-device .timer-icon{font-size:clamp(.8rem,2vw,1rem)}.puzzle-page.touch-device .timer-text{min-width:clamp(48px,11vw,64px);font-size:clamp(.9rem,2.6vw,1.25rem)}.puzzle-page.touch-device .control-btn{height:clamp(32px,7vw,48px);padding:0 clamp(10px,3vw,22px);font-size:clamp(.7rem,2vw,1rem)}.puzzle-page.touch-device .keyboard-mode-toggle{gap:clamp(6px,1.5vw,12px);padding:clamp(5px,1.2vw,8px) clamp(8px,2vw,16px)}.puzzle-page.touch-device .mode-btn{padding:clamp(7px,1.5vw,11px);font-size:clamp(.8rem,2vw,1rem)}.puzzle-page.touch-device .keyboard-grid{box-sizing:border-box;gap:clamp(4px,1.2vw,10px);width:100%;padding:clamp(5px,1.2vw,10px) clamp(6px,1.5vw,12px) clamp(8px,2vw,14px);display:grid}.puzzle-page.touch-device .keyboard-grid.grid-6x6{grid-template-rows:repeat(2,clamp(44px,12vw,80px));grid-template-columns:repeat(5,1fr)}.puzzle-page.touch-device .keyboard-grid.grid-9x9{grid-template-rows:repeat(2,clamp(44px,12vw,80px));grid-template-columns:repeat(7,1fr)}.puzzle-page.touch-device .keyboard-grid .key{aspect-ratio:unset;box-sizing:border-box;border-radius:clamp(6px,1.5vw,10px);justify-content:center;align-items:center;font-size:clamp(1rem,3.5vw,1.6rem);display:flex;width:100%!important;min-width:0!important;max-width:none!important;height:100%!important}.puzzle-page.touch-device .keyboard-grid.grid-6x6 .key[data-num="1"]{grid-area:1/2}.puzzle-page.touch-device .keyboard-grid.grid-6x6 .key[data-num="2"]{grid-area:1/3}.puzzle-page.touch-device .keyboard-grid.grid-6x6 .key[data-num="3"]{grid-area:1/4}.puzzle-page.touch-device .keyboard-grid.grid-6x6 .key[data-num="4"]{grid-area:2/2}.puzzle-page.touch-device .keyboard-grid.grid-6x6 .key[data-num="5"]{grid-area:2/3}.puzzle-page.touch-device .keyboard-grid.grid-6x6 .key[data-num="6"]{grid-area:2/4}.puzzle-page.touch-device .keyboard-grid.grid-6x6 .key.erase-left{grid-area:1/1/3;font-size:clamp(.65rem,2vw,.9rem);font-weight:600}.puzzle-page.touch-device .keyboard-grid.grid-6x6 .key.erase-right{grid-area:1/5/3;font-size:clamp(.65rem,2vw,.9rem);font-weight:600}.puzzle-page.touch-device .keyboard-grid.grid-9x9 .key[data-num="1"]{grid-area:1/2}.puzzle-page.touch-device .keyboard-grid.grid-9x9 .key[data-num="2"]{grid-area:1/3}.puzzle-page.touch-device .keyboard-grid.grid-9x9 .key[data-num="3"]{grid-area:1/4}.puzzle-page.touch-device .keyboard-grid.grid-9x9 .key[data-num="4"]{grid-area:1/5}.puzzle-page.touch-device .keyboard-grid.grid-9x9 .key[data-num="5"]{grid-area:1/6}.puzzle-page.touch-device .keyboard-grid.grid-9x9 .key[data-num="6"]{grid-area:2/2;transform:translate(calc(50% + clamp(2px,.6vw,5px)))}.puzzle-page.touch-device .keyboard-grid.grid-9x9 .key[data-num="7"]{grid-area:2/3;transform:translate(calc(50% + clamp(2px,.6vw,5px)))}.puzzle-page.touch-device .keyboard-grid.grid-9x9 .key[data-num="8"]{grid-area:2/4;transform:translate(calc(50% + clamp(2px,.6vw,5px)))}.puzzle-page.touch-device .keyboard-grid.grid-9x9 .key[data-num="9"]{grid-area:2/5;transform:translate(calc(50% + clamp(2px,.6vw,5px)))}.puzzle-page.touch-device .keyboard-grid.grid-9x9 .key.erase-left{grid-area:1/1/3;font-size:clamp(.65rem,2vw,.9rem);font-weight:600}.puzzle-page.touch-device .keyboard-grid.grid-9x9 .key.erase-right{grid-area:1/7/3;font-size:clamp(.65rem,2vw,.9rem);font-weight:600}.grid-wrapper{display:block;position:relative}.pause-overlay{z-index:200;pointer-events:none;display:none;position:absolute;inset:0}.pause-overlay.active{pointer-events:auto;display:block}.pause-content{background-color:var(--surface-2);text-align:center;--cell-inset:16.67%;inset:var(--cell-inset);border-radius:20px;flex-direction:column;justify-content:center;align-items:center;gap:4%;display:flex;position:absolute;box-shadow:0 8px 40px #0003}.grid-wrapper[data-gridsize="6"] .pause-content{--cell-inset:15%}.grid-wrapper[data-gridsize="9"] .pause-content{--cell-inset:16.67%}.pause-content h2{color:var(--text-color);margin:0;font-size:clamp(1.8rem,5vw,3.2rem);font-weight:700}.pause-content p{color:var(--text-muted);margin:0;font-size:clamp(1.1rem,2.5vw,1.6rem)}.pause-resume-btn{width:70%;border:none!important;border-radius:50px!important;height:auto!important;padding:clamp(10px,2.5%,18px) 0!important;font-size:clamp(1.05rem,2.5vw,1.45rem)!important}.sudoku-grid.blurred{filter:blur(6px);pointer-events:none;-webkit-user-select:none;user-select:none}.puzzle-page.error-page{justify-content:center;align-items:center;padding:20px}.error-content{text-align:center;flex-direction:column;align-items:center;max-width:400px;display:flex}.puzzle-page .error-icon{color:#d32f2f;margin-bottom:20px}.error-title{color:var(--text-color);margin-bottom:10px;font-size:1.5rem;font-weight:600}.puzzle-page .error-message{color:var(--text-muted);margin-bottom:30px;font-size:1rem;line-height:1.5}.error-back-btn{background-color:var(--primary-color);color:var(--button-text);cursor:pointer;border:none;border-radius:50px;padding:14px 40px;font-size:1rem;font-weight:600;text-decoration:none;transition:background-color .3s}.error-back-btn:hover{background-color:var(--primary-hover)}.error-back-btn.primary{background-color:#4a7c59}.error-back-btn.primary:hover{background-color:#3d6749}.error-buttons{flex-direction:column;gap:12px;width:100%;display:flex}.error-submessage{color:#888;margin-bottom:25px;font-size:.9rem;line-height:1.4}.error-icon.premium-icon{color:#f0a500}