*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--cobalt: #0147AD;--cobalt-dark: #013a8c;--cobalt-mid: #0155cc;--cobalt-light: #e6eef9;--cobalt-pale: #f0f5fc;--gainsboro: #DCDCDC;--gainsboro-mid: #c4c4c4;--white: #ffffff;--bg: #f5f7fb;--surface: #ffffff;--border: #DCDCDC;--border-strong: #b0b8c8;--primary: #0147AD;--primary-hover: #013a8c;--primary-light: #e6eef9;--text: #0f172a;--text-muted: #64748b;--clue: #0f172a;--user: #0147AD;--conflict: #dc2626;--selected-cell: #c2d9f8;--related-cell: #e8f1fc;--sameval-cell: #d4e6f8;--success: #16a34a;--cell-size: clamp(32px, min(calc((100vw - 2rem) / 9), 7.5vh), 58px);--radius: 10px}body{font-family:Inter,system-ui,sans-serif;background:var(--bg);color:var(--text);min-height:100vh}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}button{cursor:pointer;font-family:inherit;border:none;border-radius:var(--radius);font-size:.9rem;font-weight:500;padding:.6rem 1.2rem;transition:background .15s,box-shadow .15s,opacity .15s}.btn-primary{background:var(--primary);color:#fff;box-shadow:0 1px 3px #0147ad40}.btn-primary:hover{background:var(--cobalt-dark)}.btn-primary:disabled{opacity:.45;cursor:not-allowed}.btn-outline{background:var(--white);border:1.5px solid var(--gainsboro);color:var(--text)}.btn-outline:hover{background:var(--cobalt-pale);border-color:var(--cobalt)}.app-shell{display:flex;flex-direction:column;min-height:100vh}nav{background:var(--white);border-bottom:1.5px solid var(--gainsboro);padding:0 2rem;height:60px;display:flex;align-items:center;justify-content:space-between;box-shadow:0 1px 4px #0147ad0f}.nav-logo{font-weight:800;font-size:1.15rem;letter-spacing:-.02em;color:var(--cobalt)}.nav-links{display:flex;gap:1.25rem;align-items:center}.nav-links a{color:var(--text-muted);font-weight:500;font-size:.9rem}.nav-links a:hover{color:var(--cobalt);text-decoration:none}.page{flex:1;display:flex;flex-direction:column;align-items:center;padding:2rem 1rem;gap:1.5rem}.auth-card{background:var(--white);border:1.5px solid var(--gainsboro);border-radius:16px;padding:2.75rem;width:100%;max-width:420px;box-shadow:0 4px 24px #0147ad12}.auth-card h1{font-size:1.6rem;font-weight:700;letter-spacing:-.02em;margin-bottom:1.75rem}.field{display:flex;flex-direction:column;gap:.45rem;margin-bottom:1.1rem}.field label{font-size:.82rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.field input{border:1.5px solid var(--gainsboro);border-radius:var(--radius);padding:.7rem 1rem;font-size:1rem;font-family:inherit;outline:none;background:var(--white);color:var(--text);transition:border-color .15s,box-shadow .15s}.field input:focus{border-color:var(--cobalt);box-shadow:0 0 0 3px #0147ad1f}.password-input{position:relative;display:flex}.password-input input{flex:1;padding-right:2.75rem}.password-toggle{position:absolute;right:.6rem;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;background:none;border:none;padding:.35rem;color:var(--text-muted);cursor:pointer;border-radius:6px}.password-toggle:hover{color:var(--text)}.forgot-password-link{display:block;text-align:right;font-size:.85rem;margin:-.4rem 0 1.1rem}.form-error{color:var(--conflict);font-size:.85rem;margin-bottom:.75rem;font-weight:500}.game-page{display:flex;flex-direction:column;height:100dvh;background:var(--white);max-width:520px;margin:0 auto;width:100%;overflow:hidden}.game-header{display:flex;align-items:center;justify-content:space-between;padding:.6rem 1.25rem .4rem;background:var(--white);flex-shrink:0}.icon-btn{background:none;border:none;padding:.4rem;border-radius:8px;color:var(--text-muted);display:flex;align-items:center;justify-content:center;transition:background .12s,color .12s}.icon-btn:hover{background:var(--cobalt-pale);color:var(--cobalt)}.game-score{font-size:1.25rem;font-weight:700;color:var(--text);letter-spacing:-.02em}.game-stats{display:flex;align-items:center;padding:.35rem 1.25rem .5rem;background:var(--white);border-bottom:1px solid var(--gainsboro);gap:0;flex-shrink:0}.stat-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:1px}.stat-label{font-size:.7rem;color:var(--text-muted);font-weight:500;text-transform:uppercase;letter-spacing:.04em}.stat-value{font-size:.95rem;font-weight:700;color:var(--text)}.stat-value.stat-error{color:var(--conflict)}.stat-divider{width:1px;height:28px;background:var(--gainsboro);flex-shrink:0}.pause-btn{background:var(--gainsboro);color:var(--text-muted);border:none;border-radius:50%;width:34px;height:34px;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-left:.75rem;transition:background .12s}.pause-btn:hover{background:var(--cobalt-light);color:var(--cobalt)}.difficulty-row{display:flex;gap:.35rem;padding:.4rem 1rem .35rem;background:var(--white);flex-shrink:0;align-items:center}.diff-pill{padding:.3rem .8rem;border-radius:999px;font-size:.8rem;font-weight:600;border:1.5px solid var(--gainsboro);background:var(--white);color:var(--text-muted);cursor:pointer;transition:all .12s}.diff-pill.active{background:var(--cobalt);border-color:var(--cobalt);color:var(--white)}.diff-pill:not(.active):hover{border-color:var(--cobalt);color:var(--cobalt)}.diff-pill.new-btn{margin-left:auto;border-style:dashed;white-space:nowrap}.diff-pill.new-btn:hover{border-color:var(--cobalt);color:var(--cobalt);border-style:dashed}.game-board-area{flex:1;display:flex;align-items:center;justify-content:center;padding:.5rem .75rem;background:var(--white);min-height:0}.game-loading{color:var(--text-muted);font-size:.95rem}.game-error{color:var(--conflict);font-size:.9rem;font-weight:500;text-align:center;padding:1rem}.paused-overlay{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:3rem}.paused-icon{font-size:3rem}.paused-text{font-size:1.5rem;font-weight:700;color:var(--text-muted)}.game-controls-area{padding:0 .75rem 1rem;background:var(--white);display:flex;flex-direction:column;gap:.3rem;flex-shrink:0}.complete-banner{background:linear-gradient(135deg,var(--cobalt) 0%,var(--cobalt-mid) 100%);color:var(--white);padding:.9rem 1.5rem;border-radius:var(--radius);text-align:center;font-weight:700;font-size:1rem;box-shadow:0 3px 12px #0147ad40}.game-over-banner{background:#fef2f2;border:1.5px solid #fca5a5;color:var(--conflict);padding:.85rem 1.25rem;border-radius:var(--radius);text-align:center;font-weight:600;font-size:.9rem;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:.5rem}.sudoku-board{display:grid;grid-template-columns:repeat(9,1fr);width:min(100%,calc(100dvh - 280px));aspect-ratio:1;border:2.5px solid var(--cobalt);border-radius:4px;overflow:hidden;-webkit-user-select:none;user-select:none;box-shadow:0 4px 20px #0147ad1a;container-type:inline-size}.sudoku-cell{aspect-ratio:1;width:100%;display:flex;align-items:center;justify-content:center;cursor:pointer;position:relative;border-right-style:solid;border-bottom-style:solid;border-right-color:var(--cobalt);border-bottom-color:var(--cobalt);background:var(--white);transition:background .07s}.sudoku-cell{border-right-color:#d0d8e8;border-bottom-color:#d0d8e8}.cell-selected{background:var(--selected-cell)!important}.cell-related{background:var(--related-cell)}.cell-same-val{background:var(--sameval-cell)}.cell-conflict{background:#fde8e8!important}.cell-group-done{background:var(--cobalt-pale)}.cell-flash{animation:groupFlash .8s ease-out forwards}@keyframes groupFlash{0%{background:#0147ad}30%{background:#4d8de0}70%{background:#a8c8f5}to{background:var(--cobalt-pale)}}.num-clue{font-size:clamp(13px,4.2cqi,26px);font-weight:700;color:var(--text);line-height:1}.num-user{font-size:clamp(13px,4.2cqi,26px);font-weight:500;color:var(--cobalt);line-height:1}.num-wrong{font-size:clamp(13px,4.2cqi,26px);font-weight:500;color:var(--conflict);line-height:1}.cell-notes{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);width:100%;height:100%;padding:2px}.cell-note{font-size:clamp(6px,1.4vw,9px);font-weight:600;display:flex;align-items:center;justify-content:center;color:var(--cobalt-mid);opacity:.8}.numpad-wrapper{display:flex;flex-direction:column;gap:.25rem;width:100%}.action-row{display:flex;justify-content:space-between;padding:.5rem .25rem;gap:.25rem}.action-icon-btn{flex:1;background:none;border:none;border-radius:var(--radius);display:flex;flex-direction:column;align-items:center;gap:5px;padding:.55rem .25rem;color:var(--text-muted);font-size:.75rem;font-weight:600;transition:background .12s,color .12s}.action-icon-btn:hover:not(:disabled){background:var(--cobalt-pale);color:var(--cobalt)}.action-icon-btn:disabled{opacity:.35;cursor:not-allowed}.action-icon-btn span{line-height:1}.action-icon-btn.notes-btn.active{color:var(--cobalt)}.notes-icon-wrap{position:relative;display:flex;align-items:center;justify-content:center}.notes-badge{position:absolute;top:-6px;right:-10px;font-size:.55rem;font-weight:800;padding:1px 4px;border-radius:999px;line-height:1.4;letter-spacing:.02em}.notes-badge.on{background:var(--cobalt);color:var(--white)}.notes-badge.off{background:var(--gainsboro);color:var(--text-muted)}.hint-icon-wrap{position:relative;display:flex;align-items:center;justify-content:center}.hint-count{position:absolute;top:-6px;right:-8px;background:var(--cobalt);color:var(--white);font-size:.6rem;font-weight:800;width:16px;height:16px;border-radius:50%;display:flex;align-items:center;justify-content:center}.num-row{display:flex;justify-content:space-between;gap:.2rem;padding:.25rem 0 .5rem}.num-large-btn{flex:1;aspect-ratio:1;background:none;border:none;border-radius:var(--radius);font-size:clamp(22px,5.5vw,36px);font-weight:700;color:var(--cobalt);padding:0;transition:background .1s;min-width:0}.num-large-btn:hover:not(:disabled){background:var(--cobalt-pale)}.num-large-btn:active:not(:disabled){background:var(--cobalt-light)}.num-large-btn:disabled{opacity:.3;cursor:not-allowed}.timer{font-size:.95rem;font-weight:700;font-variant-numeric:tabular-nums;color:var(--text);letter-spacing:.01em}.pricing-cards{display:flex;gap:1.5rem;flex-wrap:wrap;justify-content:center}.pricing-card{background:var(--white);border:1.5px solid var(--gainsboro);border-radius:16px;padding:2rem;width:270px;display:flex;flex-direction:column;gap:1.1rem;box-shadow:0 2px 12px #0000000d;transition:box-shadow .15s}.pricing-card:hover{box-shadow:0 4px 20px #0147ad1a}.pricing-card.featured{border-color:var(--cobalt);box-shadow:0 4px 24px #0147ad26}.pricing-card .price{font-size:2.2rem;font-weight:800;color:var(--cobalt);letter-spacing:-.03em}.pricing-card .price span{font-size:.9rem;font-weight:400;color:var(--text-muted)}.pricing-card ul{list-style:none;display:flex;flex-direction:column;gap:.55rem;font-size:.9rem;color:var(--text)}.pricing-card li:before{content:"✓ ";color:var(--cobalt);font-weight:700}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:1rem;width:100%;max-width:600px}.stat-card{background:var(--white);border:1.5px solid var(--gainsboro);border-radius:var(--radius);padding:1.25rem;display:flex;flex-direction:column;gap:.35rem}.stat-card .label{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;font-weight:600;color:var(--text-muted)}.stat-card .value{font-size:1.6rem;font-weight:800;color:var(--cobalt)}.loading{color:var(--text-muted);text-align:center;padding:2rem;font-size:.9rem}.error-msg{color:var(--conflict);font-size:.85rem;text-align:center;font-weight:500}.diff-select-page{min-height:100dvh;background:var(--bg);display:flex;flex-direction:column;padding:0 1.25rem env(safe-area-inset-bottom,1rem);max-width:480px;margin:0 auto;width:100%}.diff-select-top{padding:2.5rem 0 1.5rem;display:flex;flex-direction:column;align-items:center;gap:.5rem}.diff-select-logo{display:flex;align-items:center;gap:.75rem}.diff-select-title{font-size:1.9rem;font-weight:800;color:var(--cobalt);letter-spacing:-.03em}.diff-select-subtitle{font-size:.9rem;color:var(--text-muted);font-weight:500;margin-top:.25rem}.diff-select-cards{display:flex;flex-direction:column;gap:.75rem;flex:1}.diff-card{display:flex;align-items:center;justify-content:space-between;background:var(--white);border:1.5px solid var(--border);border-radius:14px;padding:1rem 1.1rem;text-align:left;width:100%;transition:box-shadow .15s,border-color .15s,transform .1s}.diff-card--unlocked{cursor:pointer}.diff-card--unlocked:hover{border-color:var(--cobalt);box-shadow:0 4px 16px #0147ad1f;transform:translateY(-1px)}.diff-card--unlocked:active{transform:translateY(0);box-shadow:none}.diff-card--locked{opacity:.6;cursor:not-allowed;background:var(--bg)}.diff-card__left{display:flex;flex-direction:column;gap:.2rem;flex:1;min-width:0}.diff-card__name{font-size:1.05rem;font-weight:700;color:var(--text)}.diff-card--locked .diff-card__name{color:var(--text-muted)}.diff-card__desc{font-size:.78rem;color:var(--text-muted);font-weight:400;line-height:1.4}.diff-card__stats{display:flex;align-items:center;gap:.75rem;margin-top:.35rem;flex-wrap:wrap}.diff-card__stat{display:flex;align-items:center;gap:.3rem;font-size:.72rem;font-weight:600;color:var(--cobalt)}.diff-card__stat--time{color:var(--text-muted)}.diff-card__progress{display:flex;align-items:center;gap:.5rem;margin-top:.4rem}.diff-card__progress-label{font-size:.72rem;font-weight:600;color:var(--text-muted)}.progress-pips{display:flex;gap:4px;align-items:center}.pip{width:10px;height:10px;border-radius:50%;background:var(--gainsboro);transition:background .2s}.pip--filled{background:var(--cobalt)}.diff-card__right{padding-left:.75rem;flex-shrink:0;display:flex;align-items:center}.lock-icon{color:var(--gainsboro-mid)}.diff-select-bottom{padding:1.25rem 0 1.5rem}.daily-challenge-btn{width:100%;background:var(--cobalt);color:var(--white);border:none;border-radius:14px;padding:.9rem 1rem;font-size:.95rem;font-weight:700;display:flex;align-items:center;justify-content:center;transition:background .15s,box-shadow .15s;letter-spacing:.01em}.daily-challenge-btn:hover{background:var(--cobalt-dark);box-shadow:0 4px 16px #0147ad40}.completion-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a99;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;z-index:100;padding:1.5rem;animation:fadeIn .25s ease}@keyframes fadeIn{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}.completion-card{background:var(--white);border-radius:20px;padding:2rem 1.75rem;width:100%;max-width:340px;display:flex;flex-direction:column;align-items:center;gap:.6rem;box-shadow:0 20px 60px #0147ad33}.completion-emoji{font-size:3rem;line-height:1;margin-bottom:.25rem}.completion-title{font-size:1.5rem;font-weight:800;color:var(--text);letter-spacing:-.02em}.completion-diff{font-size:.85rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em}.completion-stats{display:flex;align-items:center;gap:1.5rem;margin:.75rem 0;padding:1rem 1.5rem;background:var(--cobalt-pale);border-radius:12px;width:100%;justify-content:center}.completion-stat{display:flex;flex-direction:column;align-items:center;gap:.2rem}.completion-stat-label{font-size:.7rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em}.completion-stat-value{font-size:1.35rem;font-weight:800;color:var(--cobalt);font-variant-numeric:tabular-nums}.completion-stat-divider{width:1px;height:36px;background:var(--gainsboro)}.completion-actions{display:flex;flex-direction:column;gap:.6rem;width:100%;margin-top:.5rem}.completion-btn{width:100%;padding:.75rem 1rem;font-size:.95rem;font-weight:700;border-radius:12px;letter-spacing:.01em}
