@import"https://fonts.googleapis.com/css2?family=Patrick+Hand&display=swap";:root{font-family:Patrick Hand,cursive;line-height:1.5;font-weight:400;color:#3a3530;background-color:#f5f0e0;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{overscroll-behavior:none;overflow:hidden}body{margin:0;display:flex;justify-content:center;min-width:320px;height:100vh;height:100dvh;background-color:#f5f0e0;background-image:radial-gradient(circle,#d8d0b8 1px,transparent 1px);background-size:20px 20px;background-attachment:fixed;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}#root{width:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;padding-top:env(safe-area-inset-top)}.blitz-share-preview{user-select:text;-webkit-user-select:text}button,select{font-family:inherit;-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none}button:focus-visible,select:focus-visible{outline:2px solid #7c5cbf;outline-offset:2px}img,svg{-webkit-user-drag:none;user-drag:none}.app,.blitz-screen,.campaign-screen,.tutorial-screen,.title-screen,.endless-screen{padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}.cell{width:100%;aspect-ratio:1;border:1.5px solid rgba(58,53,48,.35);display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:1.5rem;padding:0;transition:filter .15s ease;position:relative;user-select:none;-webkit-user-select:none;touch-action:manipulation}@media(hover:hover){.cell:hover{filter:brightness(.93)}}.cell:active{filter:brightness(.87)}.cell.conflict{box-shadow:inset 0 0 0 3px #d04030}.cell.hint{box-shadow:inset 0 0 0 3px #d4a020;animation:pulse 1s ease infinite}.cell.hint-place{box-shadow:inset 0 0 0 3px #7c5cbf;animation:pulse-place 1s ease infinite}.cell.won{animation:pop .3s ease}.queen{display:flex;align-items:center;justify-content:center;width:65%;height:65%;line-height:1;transition:filter .3s;pointer-events:none}.queen svg{width:100%;height:100%}.queen-won svg{filter:drop-shadow(0 0 4px rgba(230,160,40,.6))}.mark{display:flex;align-items:center;justify-content:center;width:50%;height:50%;line-height:1;pointer-events:none}.mark svg{width:100%;height:100%}@keyframes pulse{0%,to{box-shadow:inset 0 0 0 3px #d4a020}50%{box-shadow:inset 0 0 0 3px #d4a0204d}}@keyframes pulse-place{0%,to{box-shadow:inset 0 0 0 3px #7c5cbf}50%{box-shadow:inset 0 0 0 3px #7c5cbf4d}}@keyframes pop{0%{transform:scale(1)}50%{transform:scale(1.12)}to{transform:scale(1)}}.board{display:grid;gap:0;width:min(92vw,500px);height:min(92vw,500px);border:3px solid #3a3530;border-radius:6px;overflow:hidden;box-shadow:3px 3px #3a353026;background:#f5f0e0}.blitz-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;flex:1;min-height:300px}.blitz-loading-icon{font-size:3rem;animation:loadingPulse 1s ease-in-out infinite alternate}@keyframes loadingPulse{0%{opacity:.4;transform:scale(.95)}to{opacity:1;transform:scale(1.05)}}.blitz-loading-text{font-size:1.1rem;color:#6a6358}.blitz-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:12px 20px 20px;min-height:100vh}.blitz-header{display:flex;align-items:center;justify-content:space-between;width:min(92vw,500px);margin-bottom:12px;gap:12px;padding:8px 14px;border:2px solid rgba(58,53,48,.2);border-radius:20px;background:#f5f0e0d9}.blitz-timer{font-size:1.8rem;font-variant-numeric:tabular-nums;color:#7c5cbf;min-width:80px}.timer-low{color:#d04030;animation:timerPulse .5s ease-in-out infinite alternate}@keyframes timerPulse{0%{color:#d04030}to{color:#e87060}}.blitz-info{display:flex;align-items:center;gap:6px;font-size:.9rem;color:#6a6358}.blitz-puzzle-num{color:#3a3530}.blitz-size{color:#6a6358}.blitz-badge{padding:2px 8px;border-radius:12px;font-size:.85rem;border:2px solid}.badge-easy{background:#a8d8a0;color:#3a6830;border-color:#7cb870}.badge-medium{background:#f0e078;color:#806820;border-color:#d0c050}.badge-hard{background:#f0a8a0;color:#903028;border-color:#d08078}.blitz-bonus{color:#7c5cbf;font-size:1rem;animation:bonusFade .6s ease-out forwards}@keyframes bonusFade{0%{opacity:0;transform:translateY(4px)}30%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-12px)}}.blitz-score{font-size:.95rem;color:#3a3530;min-width:80px;text-align:right}.blitz-board-wrapper{position:relative;transition:box-shadow .15s;border-radius:6px}.blitz-countdown-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#f5f0e0d9;border-radius:6px;z-index:10}.blitz-countdown-number{font-size:4rem;color:#7c5cbf;animation:countdownPop .6s ease-out}@keyframes countdownPop{0%{transform:scale(.3);opacity:0}50%{transform:scale(1.2);opacity:1}to{transform:scale(1);opacity:1}}.blitz-exit-btn{align-self:flex-start;padding:6px 14px;font-size:1rem;font-family:inherit;background:none;border:2px solid rgba(58,53,48,.2);border-radius:16px;color:#6a6358;cursor:pointer;touch-action:manipulation;margin-bottom:8px}.solve-flash{box-shadow:0 0 0 4px #d4a020,0 0 24px #d4a02066;animation:solveGlow .6s ease-out}@keyframes solveGlow{0%{box-shadow:0 0 0 4px #d4a020,0 0 24px #d4a02066}to{box-shadow:0 0 0 4px transparent,0 0 0 transparent}}.blitz-controls{display:flex;flex-direction:column;align-items:center;gap:10px;margin-top:12px;width:min(92vw,500px)}.controls-row{display:flex;gap:8px;width:100%}.btn{flex:1;padding:10px 16px;border:2px solid rgba(58,53,48,.3);border-radius:20px;background:#7c5cbf;border-color:#5c3ea0;color:#fff;font-size:.9rem;cursor:pointer;transition:background .15s,border-color .15s,transform .1s;font-family:inherit;touch-action:manipulation}@media(hover:hover){.btn:hover{background:#6b4eb0;border-color:#4c3090;transform:translateY(-1px)}}.btn:active{transform:translateY(0)}.btn:disabled{background:#eae5d5;border-color:#3a353026;color:#b8b0a0;cursor:default;transform:none}.btn-hint{background:#f5ecd0;border-color:#d4a020;color:#a07818}@media(hover:hover){.btn-hint:hover{background:#d4a020;border-color:#b08818;color:#fff}}.btn-hint:disabled{background:#eae5d5;border-color:#3a353026;color:#b8b0a0}.btn-secondary{background:#f5f0e0;border-color:#3a35304d;color:#3a3530}@media(hover:hover){.btn-secondary:hover{background:#ece5d0;border-color:#3a3530}}.btn-secondary:disabled{background:#eae5d5;border-color:#3a353026;color:#b8b0a0}.hint-penalty{font-size:.85rem;opacity:.7}.blitz-results-overlay{position:fixed;inset:0;background:#f5f0e0b3;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:100;animation:fadeInOverlay .3s ease}@keyframes fadeInOverlay{0%{opacity:0}to{opacity:1}}.blitz-results-card{background:#f5f0e0;border:3px solid #3a3530;border-radius:12px;padding:28px 32px;text-align:center;max-width:380px;width:90vw;box-shadow:4px 4px #3a353026;animation:cardSlideUp .35s ease-out}@keyframes cardSlideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.blitz-results-heading{font-size:1.5rem;color:#7c5cbf;margin:0 0 8px}.blitz-results-title{font-size:.85rem;color:#6a6358;margin-bottom:12px}.blitz-results-score{font-size:1.3rem;color:#3a3530;margin-bottom:8px}.blitz-new-best{color:#d4a020;font-size:.95rem;margin-bottom:8px}.blitz-prev-best{color:#8a8070;font-size:.85rem;margin-bottom:8px}.blitz-share-preview{background:#f5f0e099;border:2px dashed rgba(58,53,48,.25);border-radius:8px;padding:12px 16px;font-size:.85rem;font-family:inherit;line-height:1.6;text-align:left;margin:16px 0;white-space:pre-wrap;overflow-x:auto;color:#3a3530}.blitz-results-buttons{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.blitz-ready-card{display:flex;flex-direction:column;align-items:center;background:#f5f0e0;border:3px solid #3a3530;border-radius:16px;padding:32px 28px;max-width:320px;width:90vw;box-shadow:4px 4px #3a353026;animation:cardSlideUp .35s ease-out}.blitz-ready-icon{font-size:3rem;line-height:1;margin-bottom:8px;animation:blitzReadyPulse 1.5s ease-in-out infinite}@keyframes blitzReadyPulse{0%,to{transform:scale(1)}50%{transform:scale(1.2)}}.blitz-ready-heading{font-size:1.5rem;color:#7c5cbf;margin:0 0 20px}.blitz-ready-details{width:100%;display:flex;flex-direction:column;gap:10px;margin-bottom:24px}.blitz-ready-row{display:flex;justify-content:space-between;align-items:center;padding:0 8px}.blitz-ready-label{font-size:.9rem;color:#6a6358}.blitz-ready-value{font-size:1rem;color:#3a3530}.blitz-ready-info{background:#7c5cbf14;border-radius:10px;padding:12px 16px;margin-bottom:20px;width:100%}.blitz-ready-info p{font-size:.85rem;color:#6a6358;margin:0 0 8px;line-height:1.5}.blitz-ready-info p:last-child{margin-bottom:0}.blitz-ready-start-btn{width:100%;padding:14px 20px;font-size:1.1rem}.blitz-ready-actions{display:flex;gap:16px;margin-top:16px}.blitz-text-btn{background:none;border:none;color:#6a6358;font-size:.85rem;cursor:pointer;font-family:inherit;touch-action:manipulation;padding:4px 0;text-decoration:underline;text-decoration-color:#6a63584d;text-underline-offset:2px}.blitz-rank{font-size:1.1rem;color:#7c5cbf;margin-bottom:4px}.blitz-leaderboard{width:100%;margin:12px 0}.blitz-leaderboard-title{font-size:.85rem;color:#6a6358;margin-bottom:8px;text-align:center}.blitz-leaderboard-list{display:flex;flex-direction:column;gap:4px;max-height:200px;overflow-y:auto}.blitz-lb-row{display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:8px;background:#f5f0e099;font-size:.85rem}.blitz-lb-me{background:#7c5cbf1f;border:1.5px solid rgba(124,92,191,.3)}.blitz-lb-rank{color:#6a6358;min-width:28px;font-variant-numeric:tabular-nums}.blitz-lb-emoji{font-size:1rem;line-height:1}.blitz-lb-name{flex:1;color:#3a3530;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.blitz-lb-score{color:#7c5cbf;font-variant-numeric:tabular-nums;min-width:20px;text-align:right}.campaign-screen{display:flex;flex-direction:column;align-items:center;padding:12px 20px 20px;min-height:100vh;min-height:100dvh}.campaign-screen.campaign-playing{justify-content:center}.campaign-header{display:flex;align-items:center;justify-content:space-between;width:min(92vw,500px);margin-bottom:16px}.campaign-header h2{font-size:1.4rem;color:#3a3530;margin:0}.campaign-total-stars{font-size:.9rem;color:#d4a020}.campaign-section-label{width:min(92vw,500px);font-size:1rem;color:#6a6358;margin:16px 0 8px;padding-bottom:4px;border-bottom:2px dashed rgba(58,53,48,.15)}.campaign-section-label:first-of-type{margin-top:0}.campaign-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;width:min(92vw,340px);margin-bottom:12px}.campaign-level-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;width:100%;aspect-ratio:1;border:2px solid rgba(58,53,48,.2);border-radius:12px;background:#f5f0e0;cursor:pointer;transition:transform .12s,box-shadow .12s,border-color .12s;box-shadow:2px 2px #3a353014;padding:4px}@media(hover:hover){.campaign-level-btn:not(:disabled):hover{transform:translateY(-2px);box-shadow:3px 4px #3a35301f}}.campaign-level-btn:active:not(:disabled){transform:translateY(0)}.campaign-level-btn.completed{border-color:#7c5cbf}.campaign-level-btn.perfect{border-color:#d4a020;background:#fdf8ec}.campaign-level-btn.locked{background:#eae5d5;border-color:#3a35301a;cursor:default;opacity:.6}.level-number{font-size:1.1rem;color:#3a3530;line-height:1}.locked .level-number{color:#b8b0a0}.level-stars{display:flex;gap:1px;font-size:.75rem;line-height:1}.level-star{color:#d0c8b8}.level-star.earned{color:#d4a020}.campaign-level-btn.blitz-level{background:linear-gradient(135deg,#f5f0e0 60%,#fff3d6);border-color:#d4a02059}.campaign-level-btn.blitz-level .level-number{font-size:1.2rem}.campaign-level-btn.blitz-level.locked{background:#eae5d5;border-color:#3a35301a}.campaign-blitz-progress{display:flex;align-items:center;justify-content:center;gap:6px;font-size:.9rem;color:#6a6358;text-align:center;margin-bottom:6px;font-variant-numeric:tabular-nums}.blitz-progress-dots{display:flex;gap:4px}.blitz-progress-dot{width:10px;height:10px;border-radius:50%;border:2px solid #7c5cbf;background:transparent;transition:background .3s,transform .3s}.blitz-progress-dot.completed{background:#7c5cbf}.blitz-progress-dot.current{border-color:#d4a020;box-shadow:0 0 4px #d4a02066;animation:dotPulse 1s ease-in-out infinite alternate}@keyframes dotPulse{0%{transform:scale(1)}to{transform:scale(1.2)}}.campaign-timer.low-time{color:#d04030;animation:campaignTimerPulse .5s ease-in-out infinite alternate}@keyframes campaignTimerPulse{0%{color:#d04030}to{color:#e87060}}.campaign-level-header{display:flex;align-items:center;justify-content:space-between;width:min(92vw,500px);margin-bottom:8px;gap:12px}.campaign-level-info{display:flex;align-items:center;gap:8px;font-size:1rem;color:#3a3530}.campaign-level-badge{padding:2px 8px;border-radius:12px;font-size:.85rem;border:2px solid}.campaign-timer{font-size:1.3rem;color:#3a3530;letter-spacing:1px;font-variant-numeric:tabular-nums}.campaign-controls{display:flex;gap:8px;margin-top:10px;width:min(92vw,500px)}.campaign-star-target{font-size:.85rem;color:#6a6358;text-align:center;margin-top:6px}.campaign-win-overlay{position:fixed;inset:0;background:#f5f0e0b3;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:100;animation:fadeInOverlay .3s ease}.campaign-win-card{background:#f5f0e0;border:3px solid #3a3530;border-radius:12px;padding:28px 32px;text-align:center;max-width:340px;width:90vw;box-shadow:4px 4px #3a353026;animation:cardSlideUp .35s ease-out}.campaign-win-heading{font-size:1.4rem;color:#7c5cbf;margin:0 0 12px}.campaign-win-stars{display:flex;justify-content:center;gap:8px;margin-bottom:12px}.campaign-win-star{font-size:2rem;transition:transform .3s,color .3s}.campaign-win-star.earned{color:#d4a020;animation:starPop .4s ease-out both}.campaign-win-star.unearned{color:#d0c8b8}.campaign-win-star:nth-child(2).earned{animation-delay:.15s}.campaign-win-star:nth-child(3).earned{animation-delay:.3s}@keyframes starPop{0%{transform:scale(.3);opacity:0}60%{transform:scale(1.3)}to{transform:scale(1);opacity:1}}.campaign-win-detail{font-size:.85rem;color:#6a6358;margin:4px 0}.campaign-win-buttons{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:16px}.blitz-intro-card{display:flex;flex-direction:column;align-items:center;background:#f5f0e0;border:3px solid #3a3530;border-radius:16px;padding:32px 28px;max-width:320px;width:90vw;box-shadow:4px 4px #3a353026;animation:cardSlideUp .35s ease-out}.blitz-intro-icon{font-size:3rem;line-height:1;margin-bottom:8px;animation:blitz-bolt-pulse 1.5s ease-in-out infinite}@keyframes blitz-bolt-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.2)}}.blitz-intro-heading{font-size:1.5rem;color:#7c5cbf;margin:0 0 20px}.blitz-intro-details{width:100%;display:flex;flex-direction:column;gap:10px;margin-bottom:24px}.blitz-intro-row{display:flex;justify-content:space-between;align-items:center;padding:0 8px}.blitz-intro-label{font-size:.9rem;color:#6a6358}.blitz-intro-value{font-size:1rem;color:#3a3530;display:flex;align-items:center;gap:6px}.blitz-intro-start-btn{width:100%;padding:14px 20px;font-size:1.1rem}.tutorial-screen{display:flex;flex-direction:column;align-items:center;padding:12px 20px 20px;min-height:100vh;min-height:100dvh;overflow-y:auto}.tutorial-header{display:flex;align-items:center;justify-content:space-between;width:min(92vw,500px);margin-bottom:8px}.tutorial-header h2{font-size:1.2rem;color:#3a3530;margin:0}.tutorial-progress{display:flex;gap:6px;align-items:center}.tutorial-dot{width:10px;height:10px;border-radius:50%;border:2px solid rgba(58,53,48,.2);background:#eae5d5;transition:background .3s,border-color .3s}.tutorial-dot.active{background:#7c5cbf;border-color:#5c3ea0}.tutorial-dot.completed{background:#4ea88a;border-color:#2d7d62}.tutorial-instruction{width:min(92vw,500px);background:#f5f0e0e6;border:2px solid rgba(58,53,48,.2);border-radius:12px;padding:12px 16px;margin-bottom:10px;animation:fadeIn .3s ease}.tutorial-instruction-title{font-size:1.1rem;color:#7c5cbf;margin:0 0 4px}.tutorial-instruction-text{font-size:.9rem;color:#3a3530;margin:0;line-height:1.5}.tutorial-controls{display:flex;gap:8px;margin-top:10px;width:min(92vw,500px)}.tutorial-complete-overlay{position:fixed;inset:0;background:#f5f0e0b3;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:100;animation:fadeInOverlay .3s ease}.tutorial-complete-card{background:#f5f0e0;border:3px solid #3a3530;border-radius:12px;padding:28px 32px;text-align:center;max-width:340px;width:90vw;box-shadow:4px 4px #3a353026;animation:cardSlideUp .35s ease-out}.tutorial-complete-heading{font-size:1.5rem;color:#7c5cbf;margin:0 0 8px}.tutorial-complete-text{font-size:.95rem;color:#6a6358;margin:0 0 20px}.tutorial-complete-buttons{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.tutorial-step-solved{font-size:1.1rem;color:#4ea88a;text-align:center;margin-top:8px;animation:fadeIn .4s ease}.endless-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:12px 20px 20px;min-height:100vh;min-height:100dvh}.endless-header{display:flex;align-items:center;justify-content:space-between;width:min(92vw,500px);margin-bottom:8px;gap:12px}.endless-info{display:flex;align-items:center;gap:8px}.endless-puzzle-num{font-size:1rem;color:#3a3530;font-weight:600}.endless-timer{font-size:1.3rem;color:#3a3530;letter-spacing:1px;font-variant-numeric:tabular-nums}.endless-controls{display:flex;gap:8px;margin-top:10px;width:min(92vw,500px)}.endless-streak{font-size:.85rem;color:#6a6358;text-align:center;margin-top:6px}.endless-summary-overlay{position:fixed;inset:0;background:#f5f0e0b3;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:100;animation:fadeInOverlay .3s ease}.endless-summary-card{background:#f5f0e0;border:3px solid #3a3530;border-radius:12px;padding:28px 32px;text-align:center;max-width:340px;width:90vw;box-shadow:4px 4px #3a353026;animation:cardSlideUp .35s ease-out}.endless-summary-heading{font-size:1.4rem;color:#7c5cbf;margin:0 0 16px}.endless-summary-stat{display:flex;justify-content:space-between;align-items:center;padding:6px 0;border-bottom:1px solid rgba(58,53,48,.1)}.endless-summary-stat:last-of-type{border-bottom:none}.endless-stat-label{font-size:.85rem;color:#6a6358}.endless-stat-value{font-size:.95rem;color:#3a3530;font-weight:600}.endless-summary-buttons{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:16px}.app{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;min-height:100dvh;padding:0 16px 16px}.game-header{display:flex;align-items:center;justify-content:space-between;width:min(92vw,500px);padding:12px 0}.back-btn{padding:6px 14px;border:2px solid #3a3530;border-radius:20px;background:#f5f0e0;color:#3a3530;font-size:.85rem;cursor:pointer;transition:background .15s,transform .1s;touch-action:manipulation}@media(hover:hover){.back-btn:hover{background:#ece5d0;transform:translateY(-1px)}}.timer{font-size:1.5rem;color:#3a3530;letter-spacing:1px}.win-message{font-size:1.3rem;color:#7c5cbf;text-align:center;animation:fadeIn .4s ease;margin-top:10px}.hint-reason{font-size:.85rem;color:#a07818;background:#f5f0e0e6;border:2px dashed #d4a020;border-radius:8px;padding:8px 12px;text-align:center;max-width:min(92vw,500px);animation:fadeIn .3s ease;margin-top:10px}@keyframes fadeIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.splash-screen{position:fixed;inset:0;z-index:9999;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#f5f0e0;transition:opacity .4s ease}.splash-screen.splash-fading{opacity:0;pointer-events:none}.splash-crown{width:80px;height:60px;animation:splashPulse 1.5s ease-in-out infinite}.splash-title{font-size:2rem;color:#3a3530;letter-spacing:3px;margin:12px 0 24px}.splash-dots{display:flex;gap:8px}.splash-dot{width:8px;height:8px;border-radius:50%;background:#7c5cbf;animation:splashBounce 1.2s ease-in-out infinite}.splash-dot:nth-child(2){animation-delay:.15s}.splash-dot:nth-child(3){animation-delay:.3s}@keyframes splashPulse{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}@keyframes splashBounce{0%,80%,to{opacity:.3;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}
