*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;background-color:#f5f5f5;color:#333;display:flex;justify-content:center;align-items:flex-start;min-height:100vh;padding:12px;overflow-x:hidden}.container{display:flex;flex-direction:column;align-items:center;gap:10px;width:100%;max-width:600px}h1{font-size:1.6rem;font-weight:300;color:#222;line-height:1}.sub-links{display:flex;gap:6px;align-items:center;font-size:.8rem;color:#888}.sub-link{background:transparent;color:#888;border:none;padding:2px 4px;font-size:.8rem;cursor:pointer;border-radius:4px;transition:color .2s}.sub-link:hover:not(:disabled){background:transparent;color:#4a90e2}.sub-link-sep{user-select:none}.controls{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:center}select,button{padding:6px 14px;font-size:.95rem;border:1px solid #ccc;border-radius:6px;background:#fff;cursor:pointer;font-family:inherit}button{background:#4a90e2;color:#fff;border-color:#4a90e2;transition:background .2s}button:disabled{opacity:.5;cursor:not-allowed}button:hover:not(:disabled){background:#357abd}button:active:not(:disabled){transform:translateY(1px)}button.active:not(:disabled){background:#388e3c;border-color:#388e3c;box-shadow:inset 0 0 0 2px #0003}button.active:not(:disabled):hover{background:#2e7d32;border-color:#2e7d32}.text-btn{background:transparent;color:#888;border:none;font-size:.8rem;padding:4px 8px;margin-top:6px}.text-btn:hover:not(:disabled){background:transparent;color:#d32f2f}#timer{font-size:1rem;font-variant-numeric:tabular-nums;min-width:60px;text-align:center;font-weight:500;color:#555}#grid{display:grid;--cs: clamp(32px, calc((100vmin - 240px) / 9), 64px);grid-template-columns:repeat(9,var(--cs));grid-template-rows:repeat(9,var(--cs));border:4px solid #333;width:fit-content;transition:opacity .2s;position:relative}#grid:after{content:"";position:absolute;inset:0;background:#ffeb3b80;opacity:0;pointer-events:none;z-index:10}#grid.flash:after{animation:board-flash .8s ease-out}@keyframes board-flash{0%{opacity:0}20%{opacity:1}to{opacity:0}}.cell{background:#fff;display:flex;justify-content:center;align-items:center;font-size:calc(var(--cs) * .55);font-weight:500;cursor:pointer;transition:background .1s;user-select:none;-webkit-user-select:none;border-right:1px solid #ddd;border-bottom:1px solid #ddd}.cell:hover{background:#f0f0f0}#grid.paused{opacity:.3;filter:blur(8px);pointer-events:none}.cell.selected{background:#e3f2fd;outline:3px solid #4a90e2;outline-offset:-3px;z-index:1}.cell.same-number{background:#c8e6c9}.cell.fixed{color:#111;font-weight:800;cursor:default}.cell.fixed:hover{background:#fff}.cell.error{color:#d32f2f;background:#ffebee}.cell .notes{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);width:100%;height:100%;padding:2px;gap:0}.cell .note{display:flex;justify-content:center;align-items:center;font-size:calc(var(--cs) * .22);font-weight:400;color:#666;line-height:1}.cell:nth-child(3n):not(:nth-child(9n)){border-right:4px solid #333}.cell:nth-child(n+19):nth-child(-n+27),.cell:nth-child(n+46):nth-child(-n+54){border-bottom:4px solid #333}.cell:nth-child(9n){border-right:none}.cell:nth-child(n+73){border-bottom:none}#win-overlay{display:none;position:fixed;inset:0;align-items:center;justify-content:center;background:#f5f5f5f2;z-index:20;border-radius:4px}#win-overlay.visible{display:flex}.win-content{display:flex;flex-direction:column;align-items:center;gap:12px}.win-content h2{font-size:1.8rem;font-weight:500;color:#4caf50}.win-content .win-time{font-size:1.2rem;color:#555;font-variant-numeric:tabular-nums}.win-content button{font-size:1rem;padding:10px 24px}#message{font-size:1rem;font-weight:500;color:#4caf50;min-height:1.4rem;text-align:center;line-height:1}.instructions{color:#888;font-size:.8rem;text-align:center;line-height:1.4}#leaderboard{width:100%;text-align:center}#leaderboard h2{font-size:1rem;font-weight:400;color:#333;margin-bottom:6px}#leaderboard table{width:100%;border-collapse:collapse;font-size:.85rem;background:#fff;border:1px solid #ddd;border-radius:6px;overflow:hidden}#leaderboard th,#leaderboard td{padding:6px 8px;text-align:center;border-bottom:1px solid #eee}#leaderboard th{background:#f8f8f8;font-weight:600;color:#555}#leaderboard tbody tr:last-child td{border-bottom:none}#leaderboard tbody tr:nth-child(1){background:#fff8e1}#leaderboard tbody tr:nth-child(2){background:#f5f5f5}#leaderboard tbody tr:nth-child(3){background:#fafafa}#leaderboard .empty{color:#aaa;font-style:italic;padding:12px}.paused-overlay,.loading-overlay{position:absolute;inset:0;display:none;align-items:center;justify-content:center;background:#0009;color:#fff;font-size:1.4rem;font-weight:600;z-index:15;text-transform:uppercase;letter-spacing:3px}.loading-overlay{flex-direction:column;gap:12px;background:#fffffff2;color:#333;font-size:1rem;font-weight:400;text-transform:none;letter-spacing:normal}.spinner{width:32px;height:32px;border:3px solid #ddd;border-top-color:#4a90e2;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.modal{display:none;position:fixed;inset:0;z-index:50;align-items:center;justify-content:center}.modal.visible{display:flex}.modal-backdrop{position:absolute;inset:0;background:#00000080;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.modal-card{position:relative;background:#fff;border-radius:12px;box-shadow:0 20px 60px #0000004d;width:90%;max-width:420px;max-height:80vh;overflow-y:auto;padding:24px;z-index:51}.modal-close{position:absolute;top:12px;right:16px;background:transparent;color:#999;border:none;font-size:1.6rem;line-height:1;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:50%;transition:color .2s,background .2s}.modal-close:hover{background:transparent;color:#333}.modal-content h3{font-size:1.1rem;font-weight:600;color:#222;margin-bottom:12px;margin-top:4px}.modal-content h3:not(:first-child){margin-top:20px}.modal-content ul,.modal-content ol{font-size:.85rem;line-height:1.6;color:#444;padding-left:18px}.modal-content li{margin-bottom:6px}.modal-content li:last-child{margin-bottom:0}.modal-muted{font-size:.8rem;color:#888;margin-top:16px;font-style:italic}.install-actions{margin:16px 0;text-align:center}.install-primary{background:#4a90e2;color:#fff;border-color:#4a90e2;font-size:1rem;padding:10px 24px}.install-primary:hover:not(:disabled){background:#357abd}.install-fallback{border-top:1px solid #eee;padding-top:16px;margin-top:12px}.install-fallback p{font-size:.85rem;color:#555;margin-bottom:8px}.install-fallback ol,.install-fallback ul{font-size:.8rem}.install-fallback ul{margin-top:4px;padding-left:18px;list-style-type:disc}.install-fallback ul li{margin-bottom:4px}@media print{body{background:#fff;padding:0;align-items:flex-start}.controls,#timer,#leaderboard,.instructions,#message,#win-overlay,.paused-overlay,.loading-overlay{display:none!important}#grid{border-color:#000;margin:0 auto}.cell{border-color:#ccc}.cell:nth-child(3n):not(:nth-child(9n)){border-right-color:#000}.cell:nth-child(n+19):nth-child(-n+27),.cell:nth-child(n+46):nth-child(-n+54){border-bottom-color:#000}}@media(prefers-reduced-motion:reduce){#grid.flash:after{animation:none;opacity:1}.spinner{animation:none;border-top-color:#4a90e2}.cell,button,select{transition:none}}@media(min-width:1200px)and (min-height:900px){body{padding:40px;align-items:center}.container{gap:24px;max-width:900px}h1{font-size:3rem}select,button{padding:12px 24px;font-size:1.2rem;border-radius:8px}#timer{font-size:1.6rem;min-width:90px}#grid{--cs: clamp(48px, 8vmin, 72px);border-width:6px}.cell.selected{outline-width:5px;outline-offset:-5px}.cell:nth-child(3n):not(:nth-child(9n)){border-right-width:6px}.cell:nth-child(n+19):nth-child(-n+27),.cell:nth-child(n+46):nth-child(-n+54){border-bottom-width:6px}#message{font-size:1.6rem;min-height:2rem}.instructions{font-size:1.1rem}#leaderboard h2{font-size:1.6rem;margin-bottom:12px}#leaderboard table{font-size:1.1rem}#leaderboard th,#leaderboard td{padding:10px 14px}#leaderboard .empty{padding:20px}.win-content h2{font-size:2.5rem}.win-content .win-time{font-size:1.5rem}.win-content button{font-size:1.2rem;padding:12px 32px}}
