.auth-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s ease}.auth-modal{background:#fff;border-radius:12px;padding:32px;max-width:400px;width:90%;box-shadow:0 20px 25px -5px #0000001a;animation:slideUp .3s ease;position:relative}.auth-modal-close{position:absolute;top:12px;right:12px;background:none;border:none;font-size:32px;cursor:pointer;color:#999;padding:0;width:40px;height:40px;display:flex;align-items:center;justify-content:center}.auth-modal-close:hover{color:#333}.auth-modal h2{margin:0 0 24px;font-size:24px;font-weight:700;color:#1a1a1a}.auth-notice{background:#e8f5e9;color:#2e7d32;padding:12px;border-radius:8px;font-size:13px;margin-bottom:16px;border-left:4px solid #2e7d32}.form-group{margin-bottom:16px;display:flex;flex-direction:column}.form-group label{font-size:14px;font-weight:600;margin-bottom:6px;color:#333}.form-group input{padding:12px;border:2px solid #e5e5e5;border-radius:8px;font-size:16px;font-family:inherit;transition:border-color .2s}.form-group input:focus{outline:none;border-color:#4a9d6e;box-shadow:0 0 0 3px #4a9d6e1a}.auth-error{background:#fee;color:#c00;padding:12px;border-radius:8px;font-size:14px;margin-bottom:16px}.auth-submit{width:100%;padding:12px;background:#4a9d6e;color:#fff;border:none;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;transition:background .2s}.auth-submit:hover:not(:disabled){background:#3d8059}.auth-submit:disabled{opacity:.6;cursor:not-allowed}.auth-toggle{text-align:center;font-size:14px;color:#666;margin-top:16px}.auth-toggle button{background:none;border:none;color:#4a9d6e;cursor:pointer;font-weight:600;text-decoration:underline;font-size:14px}.auth-toggle button:hover{color:#3d8059}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}:root{--bg: #faf9f7;--ink: #1a1a1a;--muted: #8a8a8a;--line: #d8d5d0;--tile: #ffffff;--hit: #4a9d6e;--near: #d4a24a;--miss: #a8a5a0;--key: #e8e5e0;--accent: #1a1a1a;--key-commit: #3d3a35}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0;height:100%;font-family:ui-sans-serif,-apple-system,Segoe UI,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--ink);overscroll-behavior:none;touch-action:manipulation}body{line-height:1.5}#root{display:flex;flex-direction:column;align-items:center;height:100dvh;width:100%;max-width:720px;margin:0 auto;padding:max(1vmin,env(safe-area-inset-top)) clamp(6px,2vw,20px) max(1vmin,env(safe-area-inset-bottom));transition:background .6s ease}.app-shell{display:flex;flex-direction:column;align-items:center;flex:1;width:100%;min-height:0;background:var(--bg)}.app-shell>.board-wrap{width:100%;max-width:var(--board-width, 100%);margin-left:auto;margin-right:auto;container-type:inline-size}.app-shell>.header,.app-shell>.keyboard,.app-shell>.action-bar{width:100%;margin-left:auto;margin-right:auto;container-type:inline-size}.app-shell.forced-portrait{position:fixed;top:50%;left:50%;width:100vh;height:100vw;transform-origin:center center}.header{width:100%;display:flex;justify-content:space-between;align-items:flex-start;gap:8px;padding:4px 0 10px}.hamburger-btn{flex:0 0 auto;display:flex;flex-direction:column;justify-content:space-between;padding:5px 0 4px;background:transparent;border:none;cursor:pointer;opacity:.32;transition:opacity .15s ease;transform:scale(.9)}.hamburger-btn:active,.hamburger-btn:hover{opacity:.65}.hamburger-btn span{display:block;width:100%;height:10px;background:#b3b3b3;border-radius:999px;flex:0 0 auto}.menu-list{display:flex;flex-direction:column;gap:8px}.menu-item{display:flex;align-items:center;gap:12px;text-align:left;background:var(--key);border:none;border-radius:14px;padding:13px 14px;font-size:15px;font-weight:600;font-family:inherit;color:var(--ink);cursor:pointer;transition:background .15s ease}.menu-item:active{background:var(--line)}.menu-item-icon{flex:0 0 auto;display:flex;width:22px;height:22px;color:var(--ink)}.menu-item-icon svg{width:100%;height:100%}.menu-item-label{flex:1 1 auto}.menu-item-count{flex:0 0 auto;font-size:11px;font-weight:600;color:var(--muted)}.menu-item-chevron{flex:0 0 auto;display:flex;width:16px;height:16px;color:var(--muted)}.menu-item-chevron svg{width:100%;height:100%}.settings-note{margin-top:16px;font-size:11px;line-height:1.5;color:var(--muted)}.settings-about{margin-top:20px;padding-top:14px;border-top:1px solid var(--line)}.settings-about-label{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}.settings-about-row{display:flex;justify-content:space-between;gap:12px;font-size:12px;color:var(--muted);padding:3px 0}.settings-about-row span:last-child{color:var(--ink);font-weight:600}.powerup-header-row{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:16px}.powerup-header-row h2{margin:0}.powerup-coins{margin-bottom:0;font-size:13px;font-weight:600;color:var(--muted)}.powerup-quest-banner{margin-bottom:14px;padding:8px 12px;border-radius:10px;background:var(--accent-soft, rgba(255, 200, 80, .18));color:var(--ink);font-size:12px;font-weight:600;line-height:1.4}.powerup-list{display:flex;flex-direction:column;gap:10px;max-height:50vh;overflow-y:auto}.powerup-section-label{margin:4px 2px 0;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.powerup-section-label:first-child{margin-top:0}.powerup-row{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--key);border-radius:12px}.powerup-row-empty{opacity:.68}.powerup-icon-wrap{position:relative;flex:0 0 auto}.powerup-icon-svg{flex:0 0 auto}.powerup-badge{position:absolute;bottom:-3px;right:-3px;min-width:18px;height:18px;padding:0 4px;box-sizing:border-box;border-radius:999px;border:2px solid var(--key);background:var(--ink);color:#fff;font-size:10px;font-weight:800;line-height:1;display:flex;align-items:center;justify-content:center}.powerup-badge-zero{background:var(--card, #fff);color:var(--muted);border-color:var(--line)}.powerup-info{flex:1 1 auto;min-width:0}.powerup-name{font-size:13px;font-weight:700;color:var(--ink)}.powerup-desc{margin-top:2px;font-size:11px;line-height:1.4;color:var(--muted)}.powerup-usage{margin-top:4px;font-size:10px;font-weight:600;color:var(--muted)}.powerup-actions{flex:0 0 auto;display:flex;flex-direction:column;gap:5px;width:84px}.powerup-actions .btn{width:100%;min-width:0;padding:6px 4px;font-size:10px}.header-left{display:flex;flex-direction:column;align-items:stretch;min-width:0;flex:0 1 auto}.day-name{font-size:clamp(19px,8.8cqw,40px);font-weight:900;text-transform:uppercase;letter-spacing:.02em;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-subtitle{margin-top:4px;font-size:clamp(10px,3.2cqw,12px);font-weight:500;letter-spacing:.03em;text-transform:uppercase;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-left .header-subtitle{text-align-last:justify}.header-right-group{display:flex;align-items:stretch;gap:8px;min-width:0;flex-shrink:1}.header-right{min-width:0;flex-shrink:1;text-align:left;display:flex;flex-direction:column;align-items:stretch}.clock{font-size:clamp(19px,8.8cqw,40px);font-weight:700;font-variant-numeric:tabular-nums;line-height:1;white-space:nowrap;transition:color .2s ease}.clock.frozen{color:#4a90d9}.divider{width:calc(100% - 12px);height:1px;background:var(--line)}.board-wrap{flex:0 1 auto;padding:clamp(6px,1.2vh,14px) 0;display:flex;align-items:center;justify-content:center;width:100%;min-height:0;position:relative}.board{display:flex;flex-direction:column;gap:6px;-webkit-user-select:none;user-select:none}.row{display:flex;gap:5px;justify-content:center}.tile{display:flex;align-items:center;justify-content:center;background:var(--tile);border:clamp(1px,.15vw,2px) solid var(--line);border-radius:clamp(6px,2vw,16px);font-weight:700;text-transform:uppercase;transition:transform .09s ease,background .25s ease,border-color .25s ease,color .25s ease}.tile.filled{border-color:var(--muted);animation:pop .12s ease}.tile.hit{background:var(--hit);border-color:var(--hit);color:#fff}.tile.near{background:var(--near);border-color:var(--near);color:#fff}.tile.miss{background:var(--miss);border-color:var(--miss);color:#fff}.tile.hint-fill{background:var(--bg);color:var(--muted)}@keyframes pop{0%{transform:scale(.9)}to{transform:scale(1)}}@keyframes tileFlip{0%,42%{background:var(--tile);border-color:var(--muted);color:var(--ink);transform:scaleX(1)}50%{background:var(--tile);border-color:var(--muted);color:var(--ink);transform:scaleX(.04)}50.01%{background:var(--reveal-bg, var(--miss));border-color:var(--reveal-bg, var(--miss));color:#fff;transform:scaleX(.04)}to{transform:scaleX(1)}}@keyframes tileBounceNear{0%{transform:translateY(0) scaleX(1) scaleY(1)}28%{transform:translateY(-6px) scaleX(.91) scaleY(1.14)}52%{transform:translateY(0) scaleX(1.22) scaleY(.8)}76%{transform:translateY(-3px) scaleX(.96) scaleY(1.06)}to{transform:translateY(0) scaleX(1) scaleY(1)}}@keyframes tileBounceHit{0%{transform:translateY(0) scaleX(1) scaleY(1) rotate(0);filter:brightness(1)}18%{transform:translateY(-13px) scaleX(.84) scaleY(1.26) rotate(-4deg);filter:brightness(1)}40%{transform:translateY(2px) scaleX(1.34) scaleY(.74) rotate(2.5deg);filter:brightness(1.35)}58%{transform:translateY(-4px) scaleX(.93) scaleY(1.1) rotate(-1.5deg);filter:brightness(1.05)}74%{transform:translateY(-1px) scaleX(1.1) scaleY(.93) rotate(.8deg);filter:brightness(1)}88%{transform:translateY(-1px) scaleX(.98) scaleY(1.02) rotate(0)}to{transform:translateY(0) scaleX(1) scaleY(1) rotate(0)}}@keyframes tileBuzz{0%{transform:translate(0) rotate(0)}14%{transform:translate(calc(var(--buzz) * -1)) rotate(calc(var(--buzz-rot) * -1))}30%{transform:translate(var(--buzz)) rotate(var(--buzz-rot))}46%{transform:translate(calc(var(--buzz) * -.68)) rotate(calc(var(--buzz-rot) * -.6))}62%{transform:translate(calc(var(--buzz) * .46)) rotate(calc(var(--buzz-rot) * .36))}80%{transform:translate(calc(var(--buzz) * -.22)) rotate(calc(var(--buzz-rot) * -.16))}to{transform:translate(0) rotate(0)}}.board-toast{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:65;max-width:min(90vw,480px);padding:18px 36px;border-radius:999px;background:#1a1a1aeb;color:#fff;font-size:26px;font-weight:500;text-align:center;line-height:1.4;pointer-events:none;animation:fadeIn .15s ease both}.keyboard{width:100%;display:flex;flex-direction:column;gap:7px;padding:6px 0 0;-webkit-user-select:none;user-select:none}.key-row{display:flex;gap:5px;justify-content:center}.key{flex:1;height:clamp(46px,6.6vh,60px);min-width:0;display:flex;align-items:center;justify-content:center;line-height:1;padding:0 2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:var(--key);border:none;border-radius:clamp(6px,2vw,16px);font-size:clamp(11px,4cqw,16px);font-weight:600;color:var(--ink);font-family:inherit;cursor:pointer;text-transform:uppercase;transition:background .2s ease,color .2s ease,transform .06s ease;position:relative}.key:active{transform:scale(.94)}.key.eliminated{background:transparent;border:1px dashed var(--line);color:var(--muted)}.key-eliminate-clone{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:var(--key);border-radius:inherit;color:var(--ink);pointer-events:none}.key.wide{flex:1.9;font-size:clamp(9px,3.7cqw,18px);letter-spacing:0}.key.narrow{flex:1.3}.key.enter{background:var(--key-commit);color:#f3f1ec}.key.enter:active{background:#4c4841}.key.glyph{display:flex;align-items:center;justify-content:center}.key.glyph svg{width:clamp(16px,7cqw,26px);height:clamp(16px,7cqw,26px)}.key.hit{background:var(--hit);color:#fff}.key.near{background:var(--near);color:#fff}.key.miss{background:var(--miss);color:#fff}.action-bar{display:flex;gap:6px;width:100%;padding:8px 0 2px;flex-wrap:wrap;justify-content:center;overflow:visible;padding-left:clamp(16px,5vw,48px);padding-right:clamp(16px,5vw,48px);padding-top:8px;padding-bottom:12px}.action-btn-hint,.action-btn-power{display:flex;align-items:center;justify-content:center}.action-btn-content{display:flex;align-items:center;justify-content:center;gap:5px}.action-btn-icon{flex:0 0 auto;width:1.1em;height:1.1em}.action-btn-power .action-btn-icon{transform:rotate(10deg)}.btn.action-btn-playagain{background:var(--hit);border-color:var(--hit);color:#fff}.btn.action-btn-playagain:active{background:var(--hit);opacity:.85}@keyframes nudgeBounceA{0%{transform:translateY(0) scale(1);background:transparent;border-color:var(--line);color:var(--ink);box-shadow:none;animation-timing-function:ease-in}4%{transform:translateY(6%) scale(1.08,.9);background:transparent;border-color:var(--line);color:var(--ink);box-shadow:none;animation-timing-function:linear}8%{transform:translateY(-148.8%) scale(1.1587,1.6217) translate(.143em);animation-timing-function:linear}14%{transform:translateY(-246.2%) scale(1.2082,2.0753) translate(-.143em);background:var(--nudge-color);border-color:var(--nudge-color);color:#fff;animation-timing-function:linear}20%{transform:translateY(-245.9%) scale(1.2081,2.0739) translate(.107em);animation-timing-function:linear}26%{transform:translateY(-230%) scale(1.2,2) translate(.357em);background:var(--nudge-color);border-color:var(--nudge-color);color:#fff;box-shadow:0 1.429em 2.143em #00000052}29%{transform:translateY(-230%) scale(1.2,2) translate(-.25em);background:var(--nudge-color);border-color:var(--nudge-color);color:#fff;box-shadow:0 1.429em 2.143em #00000052;animation-timing-function:linear}32%{transform:translateY(-230%) scale(1.2,2) translate(.143em);background:var(--nudge-color);border-color:var(--nudge-color);color:#fff;box-shadow:0 1.429em 2.143em #00000052;animation-timing-function:linear}35%{transform:translateY(-230%) scale(1.2,2) translate(-.071em);background:var(--nudge-color);border-color:var(--nudge-color);color:#fff;box-shadow:0 1.429em 2.143em #00000052;animation-timing-function:linear}38%{transform:translateY(-230%) scale(1.2,2) translate(.036em);background:var(--nudge-color);border-color:var(--nudge-color);color:#fff;box-shadow:0 1.429em 2.143em #00000052;animation-timing-function:linear}41%{transform:translateY(-230%) scale(1.2,2) translate(0);background:var(--nudge-color);border-color:var(--nudge-color);color:#fff;box-shadow:0 1.429em 2.143em #00000052;animation-timing-function:linear}44%{transform:translateY(-180.9%) scale(1.1768,1.7404) translate(-.143em);background:var(--nudge-color);border-color:var(--nudge-color);color:#fff;box-shadow:0 1.429em 2.143em #00000052;animation-timing-function:linear}47%{transform:translateY(-67.1%) scale(1.1232,1.1396) translate(.107em);background:var(--nudge-color);border-color:var(--nudge-color);color:#fff;box-shadow:0 1.429em 2.143em #00000052;animation-timing-function:linear}50%{transform:translateY(-18%) scale(1.1,.88);background:var(--nudge-color);border-color:var(--nudge-color);color:#fff;box-shadow:0 .286em .714em #00000029}54%{transform:translateY(0) scale(1.15,.82);background:transparent;border-color:var(--line);color:var(--ink);box-shadow:none}58%{transform:translateY(-6%) scale(.96,1.1);background:transparent;border-color:var(--line);color:var(--ink);box-shadow:none}62%{transform:translateY(0) scale(1.05,.93);background:transparent;border-color:var(--line);color:var(--ink);box-shadow:none}66%{transform:translateY(-2%) scale(.99,1.03);background:transparent;border-color:var(--line);color:var(--ink);box-shadow:none}70%{transform:translateY(0) scale(1);background:transparent;border-color:var(--line);color:var(--ink);box-shadow:none}to{transform:translateY(0) scale(1);background:transparent;border-color:var(--line);color:var(--ink);box-shadow:none}}@keyframes nudgeBounceB{0%{transform:translateY(0) scale(1);background:transparent;border-color:var(--line);color:var(--ink);box-shadow:none;animation-timing-function:ease-in}4%{transform:translateY(6%) scale(1.08,.9);background:transparent;border-color:var(--line);color:var(--ink);box-shadow:none;animation-timing-function:linear}8%{transform:translateY(-148.8%) scale(1.1587,1.6217) translate(.143em);animation-timing-function:linear}14%{transform:translateY(-246.2%) scale(1.2082,2.0753) translate(-.143em);background:var(--nudge-color);border-color:var(--nudge-color);color:#fff;animation-timing-function:linear}20%{transform:translateY(-245.9%) scale(1.2081,2.0739) translate(.107em);animation-timing-function:linear}26%{transform:translateY(-230%) scale(1.2,2) translate(.357em);background:var(--nudge-color);border-color:var(--nudge-color);color:#fff;box-shadow:0 1.429em 2.143em #00000052}29%{transform:translateY(-230%) scale(1.2,2) translate(-.25em);background:var(--nudge-color);border-color:var(--nudge-color);color:#fff;box-shadow:0 1.429em 2.143em #00000052;animation-timing-function:linear}32%{transform:translateY(-230%) scale(1.2,2) translate(.143em);background:var(--nudge-color);border-color:var(--nudge-color);color:#fff;box-shadow:0 1.429em 2.143em #00000052;animation-timing-function:linear}35%{transform:translateY(-230%) scale(1.2,2) translate(-.071em);background:var(--nudge-color);border-color:var(--nudge-color);color:#fff;box-shadow:0 1.429em 2.143em #00000052;animation-timing-function:linear}38%{transform:translateY(-230%) scale(1.2,2) translate(.036em);background:var(--nudge-color);border-color:var(--nudge-color);color:#fff;box-shadow:0 1.429em 2.143em #00000052;animation-timing-function:linear}41%{transform:translateY(-230%) scale(1.2,2) translate(0);background:var(--nudge-color);border-color:var(--nudge-color);color:#fff;box-shadow:0 1.429em 2.143em #00000052;animation-timing-function:linear}44%{transform:translateY(-180.9%) scale(1.1768,1.7404) translate(-.143em);background:var(--nudge-color);border-color:var(--nudge-color);color:#fff;box-shadow:0 1.429em 2.143em #00000052;animation-timing-function:linear}47%{transform:translateY(-67.1%) scale(1.1232,1.1396) translate(.107em);background:var(--nudge-color);border-color:var(--nudge-color);color:#fff;box-shadow:0 1.429em 2.143em #00000052;animation-timing-function:linear}50%{transform:translateY(-18%) scale(1.1,.88);background:var(--nudge-color);border-color:var(--nudge-color);color:#fff;box-shadow:0 .286em .714em #00000029}54%{transform:translateY(0) scale(1.15,.82);background:transparent;border-color:var(--line);color:var(--ink);box-shadow:none}58%{transform:translateY(-6%) scale(.96,1.1);background:transparent;border-color:var(--line);color:var(--ink);box-shadow:none}62%{transform:translateY(0) scale(1.05,.93);background:transparent;border-color:var(--line);color:var(--ink);box-shadow:none}66%{transform:translateY(-2%) scale(.99,1.03);background:transparent;border-color:var(--line);color:var(--ink);box-shadow:none}70%{transform:translateY(0) scale(1);background:transparent;border-color:var(--line);color:var(--ink);box-shadow:none}to{transform:translateY(0) scale(1);background:transparent;border-color:var(--line);color:var(--ink);box-shadow:none}}.nudge-a,.nudge-b{transform-origin:bottom center;position:relative;z-index:1;pointer-events:none}.btn.nudge-a,.btn.nudge-b{overflow:visible}.nudge-a{animation:nudgeBounceA 1.94s cubic-bezier(.34,1.56,.64,1) 1}.nudge-b{animation:nudgeBounceB 1.94s cubic-bezier(.34,1.56,.64,1) 1}@keyframes nudgeContentA{0%{transform:scale(1)}4%{transform:scale(.926,1.111);animation-timing-function:linear}8%{transform:scaleX(1.4);animation-timing-function:linear}14%{transform:scaleX(1.718);animation-timing-function:linear}20%{transform:scaleX(1.717);animation-timing-function:linear}26%{transform:scaleX(1.667)}41%{transform:scaleX(1.667);animation-timing-function:linear}44%{transform:scaleX(1.479);animation-timing-function:linear}47%{transform:scaleX(1.015);animation-timing-function:linear}50%{transform:scale(.909,1.136)}54%{transform:scale(.87,1.22)}58%{transform:scale(1.042,.909)}62%{transform:scale(.952,1.075)}66%{transform:scale(1.01,.971)}70%{transform:scale(1)}to{transform:scale(1)}}@keyframes nudgeContentB{0%{transform:scale(1)}4%{transform:scale(.926,1.111);animation-timing-function:linear}8%{transform:scaleX(1.4);animation-timing-function:linear}14%{transform:scaleX(1.718);animation-timing-function:linear}20%{transform:scaleX(1.717);animation-timing-function:linear}26%{transform:scaleX(1.667)}41%{transform:scaleX(1.667);animation-timing-function:linear}44%{transform:scaleX(1.479);animation-timing-function:linear}47%{transform:scaleX(1.015);animation-timing-function:linear}50%{transform:scale(.909,1.136)}54%{transform:scale(.87,1.22)}58%{transform:scale(1.042,.909)}62%{transform:scale(.952,1.075)}66%{transform:scale(1.01,.971)}70%{transform:scale(1)}to{transform:scale(1)}}.nudge-a .action-btn-content{animation:nudgeContentA 1.94s cubic-bezier(.34,1.56,.64,1) 1}.nudge-b .action-btn-content{animation:nudgeContentB 1.94s cubic-bezier(.34,1.56,.64,1) 1}.nudge-hint{--nudge-color: #524d47}.nudge-power{--nudge-color: #3a3d42}@media (prefers-reduced-motion: reduce){.nudge-a,.nudge-b{animation:none}}.btn{flex:1;min-width:clamp(44px,13cqw,90px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:clamp(6px,2cqw,12px) clamp(3px,1.5cqw,8px);background:transparent;border:1px solid var(--line);border-radius:clamp(6px,2vw,16px);font-size:clamp(9px,3cqw,13px);font-weight:500;font-family:inherit;color:var(--ink);cursor:pointer;transition:background .15s ease;transform-origin:center center;will-change:transform}.btn:active{background:#0000000d}.action-bar .btn{font-size:clamp(11px,3.6cqw,15px);font-weight:700}.btn:disabled{opacity:.35;cursor:not-allowed}.modal-veil{position:fixed;top:0;right:0;bottom:0;left:0;background:#14141459;display:flex;align-items:center;justify-content:center;padding:20px;z-index:60}.modal-card{background:#fff;border-radius:12px;padding:22px;width:100%;max-width:360px;min-height:min(420px,70vh);display:flex;flex-direction:column;box-shadow:0 18px 50px #0000002e;animation:rise .22s ease;max-height:80vh;overflow-y:auto}.modal-card>*:last-child{margin-top:auto;padding-top:20px}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.modal-card h2{margin:0 0 16px;font-size:15px;font-weight:400;letter-spacing:.16em;text-transform:uppercase}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}.big-num{font-size:26px;font-weight:300;font-variant-numeric:tabular-nums}.stat-label{font-size:9px;text-transform:uppercase;letter-spacing:.16em;color:var(--muted);margin-top:3px}.lb-group-switch,.group-tabs-row{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}.lb-group-pill{padding:7px 14px;border:1px solid var(--line);border-radius:999px;background:transparent;font-family:inherit;font-size:12px;font-weight:700;color:var(--muted);cursor:pointer}.lb-group-pill.active{border-color:var(--accent);color:#fff;background:var(--accent)}.group-add-actions{margin-bottom:14px}.invite-actions{display:flex;gap:6px;margin-top:8px}.invite-actions .btn{flex:1}.group-detail-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.group-detail-header .btn{flex:0 0 auto;padding:5px 12px}.group-detail-actions{display:flex;align-items:center;gap:6px;flex:0 0 auto}.favorite-star{flex:0 0 auto;width:30px;height:30px;display:flex;align-items:center;justify-content:center;background:transparent;border:none;font-size:18px;line-height:1;color:var(--muted);cursor:pointer}.favorite-star.favorited{color:var(--near)}.icon-picker{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.icon-choice{width:38px;height:38px;font-size:18px;display:flex;align-items:center;justify-content:center;background:var(--key);border:2px solid transparent;border-radius:10px;cursor:pointer}.icon-choice.selected{border-color:var(--accent);background:#0000000f}.danger-btn{color:#b3462c;border-color:#b3462c}.lb-tabs{display:flex;gap:4px;margin-bottom:14px;border-bottom:1px solid var(--line)}.lb-tab{flex:1;padding:8px 4px;border:none;background:none;font-family:inherit;font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}.lb-tab.active{color:var(--ink);border-bottom-color:var(--ink)}.lb-list{list-style:none;margin:0 0 8px;padding:0;display:flex;flex-direction:column;gap:2px}.lb-row{display:flex;align-items:center;gap:10px;padding:9px 6px;border-radius:8px}.lb-row-me{background:#4a9d6e17}.lb-rank{width:20px;flex-shrink:0;font-size:12px;font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums;text-align:center}.lb-name{flex:1;min-width:0;font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lb-score{font-size:13px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--hit)}.lb-row-unplayed{opacity:.55}.lb-row-unplayed .lb-score{font-size:11px;font-weight:600;font-style:italic;color:var(--muted)}.game-summary{width:100%;display:flex;flex-direction:column;align-items:center;padding:4px 0}.game-summary-headline{margin:4px 0 14px;font-size:21px;font-weight:800;text-align:center}.game-summary-headline.won{color:var(--hit)}.game-summary-headline.lost{color:var(--muted)}.game-summary-answer-tiles{display:flex;justify-content:center;gap:4px;margin-bottom:18px}.word-reveal-tile.game-summary-tile{opacity:1;width:30px;height:30px;font-size:15px}.game-summary-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;width:100%;margin-bottom:8px}.game-summary-stat{text-align:center}.game-summary-stat .big-num{font-weight:700}.play-again-btn{width:min(100%,280px);margin:6px 0 16px;padding:16px;background:var(--accent);color:#fff;border:none;border-radius:16px;font-size:15px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;font-family:inherit;cursor:pointer;box-shadow:0 10px 26px #00000029;transition:opacity .2s ease,transform .1s ease,background .2s ease}.game-summary>.solid-btn{width:min(100%,280px);align-self:center}.play-again-btn.won{background:var(--hit)}.play-again-btn:hover{opacity:.92}.play-again-btn:active{opacity:.85;transform:scale(.98)}.game-summary-rewards{margin:0 0 12px;font-size:13px;font-weight:600;color:var(--ink);text-align:center}.game-summary-chest{margin-top:4px;font-size:12px;font-weight:600;color:var(--near)}.game-summary-fav-preview{margin:0 0 12px;padding:8px 14px;background:var(--key);border:none;border-radius:999px;font-size:12px;font-weight:600;color:var(--ink);cursor:pointer}@keyframes gameSummaryPopIn{0%{transform:scale(.7) translateY(40px);opacity:0}60%{transform:scale(1.08)}to{transform:scale(1);opacity:1}}@keyframes gameSummaryPopInHeadline{0%{transform:scale(0);opacity:0}50%{transform:scale(1.15)}to{transform:scale(1);opacity:1}}@keyframes gameSummaryTileBounceIn{0%{transform:scale(0) rotateY(-90deg);opacity:0}50%{transform:scale(1.1) rotateY(10deg)}to{transform:scale(1) rotateY(0);opacity:1}}@keyframes gameSummaryStatLand{0%{transform:translateY(-30px);opacity:0}70%{transform:translateY(4px)}to{transform:translateY(0);opacity:1}}@keyframes gameSummaryStatLandBig{0%{transform:scale(.8) translateY(-40px);opacity:0}60%{transform:scale(1.12) translateY(6px)}to{transform:scale(1) translateY(0);opacity:1}}@keyframes gameSummaryCoinBurst{0%{opacity:1}to{opacity:0}}@keyframes gameSummaryCoinSparkFly{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(calc(cos(var(--angle)) * var(--dist)),calc(sin(var(--angle)) * var(--dist))) scale(.3);opacity:0}}@keyframes gameSummaryFadeIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.game-summary.game-summary-win-pop{animation:gameSummaryPopIn .5s cubic-bezier(.34,1.56,.64,1)}.game-summary-headline.game-summary-pop-in{animation:gameSummaryPopInHeadline .4s cubic-bezier(.34,1.56,.64,1)}.game-summary-tile-bounce-in{animation:gameSummaryTileBounceIn .5s cubic-bezier(.34,1.56,.64,1) both}.game-summary-stat{opacity:0}.game-summary-stat.revealed{opacity:1}.game-summary-stat.game-summary-stat-land{animation:gameSummaryStatLand .6s cubic-bezier(.34,1.2,.64,1) both}.game-summary-stat.game-summary-stat-land-big{animation:gameSummaryStatLandBig .7s cubic-bezier(.34,1.3,.64,1) both}.game-summary-coins{margin:16px 0 12px;display:flex;align-items:center;justify-content:center;gap:8px;font-size:18px;font-weight:700;color:var(--ink);position:relative;opacity:0;transform:scale(.8)}.game-summary-coins.revealed{animation:gameSummaryStatLandBig .8s cubic-bezier(.34,1.3,.64,1) forwards}.game-summary-coins-icon{font-size:24px}.game-summary-coins-num{font-size:32px;font-weight:800;color:var(--near)}.game-summary-coins-label{font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.game-summary-coin-burst{position:absolute;width:100%;height:100%;top:0;left:0}.game-summary-coin-spark{position:absolute;width:8px;height:8px;background:var(--near);border-radius:50%;left:50%;top:50%;margin:-4px 0 0 -4px;animation:gameSummaryCoinSparkFly .8s ease-out both}.game-summary-fade-in{animation:gameSummaryFadeIn .5s ease-out both}.game-summary-coins .game-summary-chest{margin-top:0;margin-left:100%;font-size:11px;position:absolute;bottom:-18px;left:50%;transform:translate(-50%);white-space:nowrap;animation:gameSummaryFadeIn .6s ease-out .4s both}.game-summary-secondary{display:flex;justify-content:space-between;gap:2px;width:100%;margin:2px 0 16px}.game-summary-secondary-btn{display:flex;flex-direction:column;align-items:center;gap:5px;flex:1;min-width:0;background:none;border:none;padding:0;cursor:pointer;color:inherit;font-family:inherit}.game-summary-secondary-icon{width:40px;height:40px;border-radius:50%;background:var(--key);display:flex;align-items:center;justify-content:center;color:var(--ink);transition:background .15s ease}.game-summary-secondary-icon svg{width:18px;height:18px}.game-summary-secondary-btn:hover .game-summary-secondary-icon,.game-summary-secondary-btn:active .game-summary-secondary-icon{background:var(--line)}.game-summary-secondary-label{font-size:9.5px;font-weight:600;color:var(--muted);text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.group-feed{display:flex;flex-direction:column;gap:8px;max-height:240px;overflow-y:auto;margin-top:14px;padding-top:10px;border-top:1px solid var(--line)}.group-feed-post{padding:8px 10px;border-radius:8px;background:#00000005}.group-feed-name{font-size:11px;font-weight:700;margin-bottom:4px}.group-feed-text{margin:0;font-family:inherit;font-size:11px;line-height:1.4;white-space:pre-wrap;color:var(--ink)}.badge-shelf{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;max-height:260px;overflow-y:auto;padding:10px 10px 4px;margin:0 -10px 16px}.badge-item{position:relative;border:1px solid var(--line);border-radius:8px;padding:10px 4px;text-align:center;transition:all .2s ease}.badge-item.earned{border-color:var(--near);background:#fdf8ee}.badge-item.locked{opacity:.3}.badge-sticker{position:absolute;top:-7px;right:-6px;min-width:22px;padding:2px 5px;border-radius:9px;background:var(--near);border:1.5px solid #fff;box-shadow:0 2px 5px #00000029;color:#fff;font-size:10px;font-weight:700;line-height:1.3;letter-spacing:.01em;font-variant-numeric:tabular-nums;transform:rotate(7deg)}.badge-emoji{font-size:20px;margin-bottom:4px}.badge-name{font-size:9px;margin-top:3px;font-weight:500}.solid-btn{width:100%;padding:11px;background:var(--accent);color:#fff;border:none;border-radius:14px;font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;font-family:inherit;cursor:pointer;transition:opacity .2s ease}.solid-btn:hover{opacity:.9}.solid-btn:active{opacity:.8}.solid-btn:disabled{opacity:.4;cursor:not-allowed}.auth-field{display:block;margin-bottom:12px}.auth-field span{display:block;margin-bottom:5px;font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.auth-field input{width:100%;padding:10px;border:1px solid var(--line);border-radius:8px;font-size:14px;font-family:inherit;color:var(--ink);background:#fff}.auth-field input:focus{outline:none;border-color:var(--accent)}.auth-notice{margin:0 0 14px;padding:9px 11px;background:#00000009;border-radius:8px;font-size:11px;line-height:1.45;color:var(--muted)}.auth-notice-row{display:flex;align-items:center;gap:8px;margin:0 0 14px}.auth-notice-row .auth-notice{flex:1 1 auto;margin:0}.auth-notice-row .btn{flex:0 0 auto}.modal-back-link{display:inline-flex;align-items:center;margin-bottom:6px;padding:0;background:none;border:none;font-size:12px;font-weight:500;color:var(--muted);cursor:pointer}.modal-back-link:active{color:var(--ink)}.auth-error{margin:0 0 12px;font-size:12px;line-height:1.4;color:#b4443a}.auth-alt{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.auth-alt .btn{flex:1 1 calc(50% - 4px)}.auth-switch{margin:14px 0 0;text-align:center;font-size:12px;color:var(--muted)}.auth-switch button{padding:0;border:none;background:none;font:inherit;color:var(--ink);text-decoration:underline;cursor:pointer}.auth-dismiss{width:100%;margin-top:14px}.account-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;margin-bottom:16px;background:#00000005;border-radius:8px}.account-name{font-size:14px;font-weight:600;color:var(--ink)}.account-meta{margin-top:2px;font-size:11px;color:var(--muted)}.account-row .btn{flex:none;min-width:0;padding:7px 12px}.badge-ceremony{position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;pointer-events:none}.badge-anchor{position:absolute;transform:translate(-50%,-50%)}.badge-award{position:relative;display:flex;flex-direction:column;align-items:center;padding:30px 34px 26px;border-radius:18px;background:#fff;box-shadow:0 24px 60px #0000002b;text-align:center}.badge-shock{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:18px;border:2px solid var(--near);animation:badgeShock .62s cubic-bezier(.15,.7,.3,1) both}.badge-shock--late{border-color:var(--hit);animation-delay:.11s}.badge-award-emoji{font-size:54px;line-height:1;animation:badgeEmoji .7s cubic-bezier(.2,1.5,.4,1) 90ms both}.badge-award-name{margin-top:14px;font-size:17px;font-weight:600;letter-spacing:.02em;color:var(--ink);animation:badgeText .46s ease-out .17s both}.badge-award-desc{margin-top:5px;max-width:260px;font-size:12.5px;line-height:1.45;color:var(--muted);animation:badgeText .46s ease-out 225ms both}.badge-award-count{margin-top:14px;font-size:9px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--line);animation:badgeText .46s ease-out .28s both}@keyframes badgeDrop{0%{opacity:0;transform:translateY(-180px) scaleX(.86) scaleY(1.2)}16%{opacity:1;transform:translateY(0) scaleX(1.16) scaleY(.8)}24%{transform:translateY(-14px) scaleX(.97) scaleY(1.04)}32%{transform:translateY(0) scaleX(1) scaleY(1)}60%{opacity:1;transform:translateY(0) scaleX(1) scaleY(1)}82%{opacity:1;transform:translate(calc(var(--exit-x) * .55),calc(var(--exit-y) * .7 - 60px)) scale(.7) rotate(10deg)}to{opacity:0;transform:translate(var(--exit-x),var(--exit-y)) scale(.1) rotate(18deg)}}@keyframes badgeSlideLeft{0%{opacity:0;transform:translate(-120vw) rotate(-11deg)}20%{opacity:1;transform:translate(26px) rotate(4deg)}28%{transform:translate(-9px) rotate(-2deg)}36%{transform:translate(0) rotate(0)}60%{opacity:1;transform:translate(0) rotate(0)}82%{opacity:1;transform:translate(calc(var(--exit-x) * .55),calc(var(--exit-y) * .7 - 60px)) scale(.7) rotate(-10deg)}to{opacity:0;transform:translate(var(--exit-x),var(--exit-y)) scale(.1) rotate(-18deg)}}@keyframes badgeSlideRight{0%{opacity:0;transform:translate(120vw) rotate(11deg)}20%{opacity:1;transform:translate(-26px) rotate(-4deg)}28%{transform:translate(9px) rotate(2deg)}36%{transform:translate(0) rotate(0)}60%{opacity:1;transform:translate(0) rotate(0)}82%{opacity:1;transform:translate(calc(var(--exit-x) * .55),calc(var(--exit-y) * .7 - 60px)) scale(.7) rotate(10deg)}to{opacity:0;transform:translate(var(--exit-x),var(--exit-y)) scale(.1) rotate(18deg)}}@keyframes badgePunch{0%{opacity:0;transform:scale(.18) rotate(-14deg)}15%{opacity:1;transform:scale(1.2) rotate(5deg)}23%{transform:scale(.94) rotate(-2deg)}31%{transform:scale(1) rotate(0)}60%{opacity:1;transform:scale(1) rotate(0)}82%{opacity:1;transform:translate(calc(var(--exit-x) * .55),calc(var(--exit-y) * .7 - 60px)) scale(.7) rotate(10deg)}to{opacity:0;transform:translate(var(--exit-x),var(--exit-y)) scale(.1) rotate(18deg)}}@keyframes badgeSpring{0%{opacity:0;transform:translateY(150px) scaleX(1.14) scaleY(.84)}18%{opacity:1;transform:translateY(-20px) scaleX(.93) scaleY(1.12)}27%{transform:translateY(6px) scaleX(1.04) scaleY(.97)}35%{transform:translateY(0) scaleX(1) scaleY(1)}60%{opacity:1;transform:translateY(0) scaleX(1) scaleY(1)}82%{opacity:1;transform:translate(calc(var(--exit-x) * .55),calc(var(--exit-y) * .7 - 60px)) scale(.7) rotate(-10deg)}to{opacity:0;transform:translate(var(--exit-x),var(--exit-y)) scale(.1) rotate(-18deg)}}@keyframes badgeShock{0%{opacity:.6;transform:scale(.72)}to{opacity:0;transform:scale(1.9)}}@keyframes badgeEmoji{0%{opacity:0;transform:scale(0) rotate(-28deg)}60%{opacity:1;transform:scale(1.22) rotate(9deg)}to{opacity:1;transform:scale(1) rotate(0)}}@keyframes badgeText{0%{opacity:0;transform:translateY(9px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion: reduce){.badge-award,.badge-award-emoji,.badge-award-name,.badge-award-desc,.badge-award-count{animation:badgeText .3s ease-out both!important}.badge-shock{display:none}}.badge-toast{position:fixed;top:max(12px,env(safe-area-inset-top));left:50%;transform:translate(-50%);z-index:80;display:flex;flex-direction:column;gap:8px;width:calc(100% - 24px);max-width:340px;pointer-events:none}.badge-pop{background:#fff;border:1.5px solid var(--near);border-radius:10px;padding:12px 14px;display:flex;align-items:center;gap:12px;box-shadow:0 10px 30px #00000024;animation:drop .3s ease}@keyframes drop{0%{opacity:0;transform:translateY(-14px)}to{opacity:1;transform:translateY(0)}}.badge-emoji-pop{font-size:24px;flex-shrink:0}.badge-text-pop h3{margin:0;font-size:13px;font-weight:600}.badge-text-pop p{margin:2px 0 0;font-size:11px;color:var(--muted)}.word-reveal-inline{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;z-index:40;pointer-events:none;animation:fadeIn .3s ease both}.word-reveal-inner{pointer-events:auto;text-align:center}.word-reveal-label{margin-bottom:16px;font-size:12px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.word-reveal-tiles{display:flex;justify-content:center}.word-reveal-tile{display:flex;align-items:center;justify-content:center;background:var(--hit);border-radius:6px;color:#fff;font-weight:700;text-transform:uppercase;opacity:0}.word-reveal-dismiss{margin-top:22px;padding:9px 22px;border:1px solid var(--line);border-radius:6px;background:transparent;font-family:inherit;font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--ink);cursor:pointer;animation:fadeIn .3s ease both}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes letterDrop{0%{opacity:0;animation-timing-function:cubic-bezier(.55,.055,.675,.19);transform:translateY(-62vh) translate(var(--drop-sway, 0px)) scaleX(.88) scaleY(1.2) rotate(calc(var(--drop-tilt, 0deg) * .6))}7%{opacity:1;animation-timing-function:cubic-bezier(.55,.055,.675,.19);transform:translateY(-58vh) translate(calc(var(--drop-sway, 0px) * .9)) scaleX(.88) scaleY(1.2) rotate(calc(var(--drop-tilt, 0deg) * .6))}58%{animation-timing-function:cubic-bezier(0,.6,.3,1);transform:translateY(0) translate(0) scaleX(.86) scaleY(1.22) rotate(0)}67%{animation-timing-function:cubic-bezier(.3,0,.15,1);transform:translateY(3px) translate(0) scaleX(1.26) scaleY(.78) rotate(calc(var(--drop-tilt, 0deg) * .5))}76%{animation-timing-function:cubic-bezier(.55,0,.85,.45);transform:translateY(-15px) translate(0) scaleX(.91) scaleY(1.13) rotate(calc(var(--drop-tilt, 0deg) * -.35))}86%{animation-timing-function:ease-out;transform:translateY(2px) translate(0) scaleX(1.07) scaleY(.95) rotate(0)}94%{animation-timing-function:ease-out;transform:translateY(-3px) translate(0) scaleX(.98) scaleY(1.02) rotate(0)}to{opacity:1;transform:translateY(0) translate(0) scaleX(1) scaleY(1) rotate(0)}}@keyframes tumblingTile{0%{opacity:1;transform:translateY(0) translate(0) rotate(0) rotateX(0) rotateY(0) scaleX(1) scaleY(1)}85%{opacity:1}to{opacity:0;transform:translateY(135vh) translate(var(--drift-x)) rotate(var(--rotation)) rotateX(var(--rot-x)) rotateY(var(--rot-y)) scaleX(.85) scaleY(1.08)}}@keyframes celebrationPop{0%{transform:translateY(0) scaleX(1) scaleY(1) rotate(0);animation-timing-function:cubic-bezier(.4,0,.6,1)}8%{transform:translateY(0) scaleX(1.08) scaleY(.86) rotate(0);animation-timing-function:cubic-bezier(.2,0,.1,1)}18%{transform:translateY(-14px) scaleX(.9) scaleY(1.16) rotate(calc(var(--lean) * -.4));animation-timing-function:cubic-bezier(.15,.6,.35,1)}34%{transform:translateY(-42px) scaleX(1) scaleY(1) rotate(var(--lean));animation-timing-function:cubic-bezier(.5,0,.85,.4)}48%{transform:translateY(-10px) scaleX(.95) scaleY(1.09) rotate(calc(var(--lean) * .3));animation-timing-function:cubic-bezier(.9,0,1,1)}56%{transform:translateY(0) scaleX(1.18) scaleY(.78) rotate(0);animation-timing-function:cubic-bezier(.15,.6,.35,1)}66%{transform:translateY(-8px) scaleX(.95) scaleY(1.1) rotate(calc(var(--lean) * -.3));animation-timing-function:cubic-bezier(.5,0,.85,.4)}76%{transform:translateY(-16px) scaleX(1) scaleY(1) rotate(calc(var(--lean) * .6));animation-timing-function:cubic-bezier(.9,0,1,1)}84%{transform:translateY(-6px) scaleX(.97) scaleY(1.06) rotate(calc(var(--lean) * .2));animation-timing-function:cubic-bezier(.2,0,.4,1)}90%{transform:translateY(0) scaleX(1.1) scaleY(.9) rotate(0);animation-timing-function:ease-out}96%{transform:translateY(-2px) scaleX(.99) scaleY(1.02) rotate(0);animation-timing-function:ease-out}to{transform:translateY(0) scaleX(1) scaleY(1) rotate(0)}}@keyframes celebrationFlash{0%,50%{filter:brightness(1)}56%{filter:brightness(1.22)}70%{filter:brightness(1)}90%{filter:brightness(1.1)}to{filter:brightness(1)}}.tile.celebrating{transform-origin:bottom center;will-change:transform}@media (prefers-reduced-motion: reduce){.tile.celebrating{animation:celebrationFlash .5s ease-out both!important}}.dev-panel{position:fixed;bottom:0;left:0;right:0;background:#000000e6;color:#0f0;padding:12px;font-family:monospace;font-size:12px;z-index:100;max-height:200px;overflow-y:auto}.dev-panel h3{margin:0 0 8px;font-size:12px}.dev-controls{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:8px}.dev-btn{padding:4px 8px;background:#0f0;color:#000;border:none;border-radius:3px;font-size:11px;font-family:monospace;font-weight:700;cursor:pointer}.dev-btn:active{opacity:.8}.dev-info{font-size:11px;line-height:1.4}.confetti-container{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden;z-index:1}.cf-spread,.cf-gravity,.cf-sway{position:absolute;top:0;right:0;bottom:0;left:0;will-change:transform}.cf-piece{position:absolute}.cf-paper{border-radius:1px;will-change:transform}@keyframes cfReveal{0%{opacity:0}to{opacity:1}}@keyframes cfSpread{0%{transform:translate(0);animation-timing-function:cubic-bezier(.05,.7,.25,1)}to{transform:translate(var(--spread))}}@keyframes cfGravity{0%{transform:translateY(0);animation-timing-function:cubic-bezier(.1,.65,.35,1)}18%{transform:translateY(var(--rise));animation-timing-function:cubic-bezier(.55,0,.9,.75)}to{transform:translateY(var(--fall))}}@keyframes cfSway{0%{transform:translate(0)}28%{transform:translate(var(--sway))}55%{transform:translate(calc(var(--sway) * -.7))}78%{transform:translate(calc(var(--sway) * .45))}to{transform:translate(0)}}@keyframes cfSpin{0%{transform:rotateY(0) rotate(0)}to{transform:rotateY(var(--spin-y)) rotate(var(--spin-z))}}@keyframes cfFade{0%,82%{opacity:var(--depth-opacity)}to{opacity:0}}@keyframes cfRise{0%,20%{z-index:1}21%{z-index:9999}to{z-index:9999}}@media (prefers-reduced-motion: reduce){.confetti-container{display:none}}.cal-wrap{margin-top:24px;padding:16px;border-radius:8px;background:#00000005}.cal-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}.cal-nav-btn{padding:4px 10px;border:none;background:none;font-size:16px;color:var(--muted);cursor:pointer}.cal-nav-label{font-size:13px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--ink)}.cal-weekdays{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:6px}.cal-weekday{font-size:9px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;text-align:center;color:var(--muted)}.cal-grid{--cal-gap: 3px;display:grid;grid-template-columns:repeat(7,1fr);gap:var(--cal-gap);margin-bottom:14px}.cal-cell{position:relative;aspect-ratio:1}.cal-day{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;border:none;border-radius:4px;font-family:inherit;font-size:11px;font-weight:600;font-variant-numeric:tabular-nums;transition:background .2s ease,opacity .2s ease}.cal-day.unplayed{background:var(--line);color:var(--muted);opacity:.35;cursor:default}.cal-day.played{background:var(--hit);color:#fff;cursor:pointer}.cal-day:disabled{cursor:default}.cal-day.connect-left{border-top-left-radius:0;border-bottom-left-radius:0}.cal-day.connect-right{border-top-right-radius:0;border-bottom-right-radius:0}.cal-day.connect-right:after{content:"";position:absolute;top:0;right:calc(var(--cal-gap) * -1);width:var(--cal-gap);height:100%;background:var(--hit)}.cal-carry{position:absolute;width:6px;height:6px;background:var(--hit);pointer-events:none}.cal-carry-in{top:-2px;left:2px;border-radius:0 0 2px}.cal-carry-out{bottom:-2px;right:2px;border-radius:2px 0 0}.cal-day.today{box-shadow:0 0 0 2px var(--ink)}.cal-day.today.played{animation:calLive 2.2s ease-in-out infinite}@keyframes calLive{0%,to{box-shadow:0 0 0 2px var(--ink),0 0 0 2px #4a9d6e66}50%{box-shadow:0 0 0 2px var(--ink),0 0 0 6px #4a9d6e00}}@media (prefers-reduced-motion: reduce){.cal-day.today.played{animation:none}}.cal-badge-mark{position:absolute;top:-5px;right:-5px;min-width:15px;height:15px;padding:0 3px;border-radius:8px;background:var(--near);border:1.5px solid #fff;box-shadow:0 1px 3px #0003;color:#fff;font-size:9px;font-weight:700;line-height:12px;text-align:center;pointer-events:none}.cal-legend{display:flex;gap:14px;font-size:10px;color:var(--muted)}.cal-legend-item{display:flex;align-items:center;gap:5px}.cal-legend-swatch{width:10px;height:10px;border-radius:2px;background:var(--line);opacity:.5}.cal-legend-swatch.played{background:var(--hit);opacity:1}.cal-legend-swatch.today{background:var(--line);opacity:1;box-shadow:0 0 0 2px var(--ink)}.day-detail{text-align:center}.day-detail-date{font-size:15px;font-weight:500;color:var(--ink)}.day-detail-day{margin-top:2px;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.day-detail-result{margin-top:14px;font-size:13px;font-weight:600}.day-detail-result.won{color:var(--hit)}.day-detail-result.lost{color:var(--miss)}.day-detail-grid{display:inline-flex;flex-direction:column;gap:2px;margin-top:14px;font-size:18px;line-height:1}.day-detail-row{display:flex;gap:2px;justify-content:center}.day-detail-word{margin-top:14px;font-size:12px;color:var(--muted)}.day-detail-word strong{color:var(--ink);letter-spacing:.04em}.error-notification{position:fixed;top:12px;left:12px;right:12px;background:#fee;border:1px solid #fcc;border-radius:6px;padding:12px 16px;display:flex;gap:12px;align-items:flex-start;z-index:1000;box-shadow:0 2px 8px #0000001a;animation:slideDown .3s ease-out}.error-icon{font-size:20px;flex-shrink:0;color:#d32f2f}.error-content{flex:1;min-width:0}.error-title{font-weight:600;font-size:14px;color:#c62828;margin-bottom:2px}.error-message{font-size:12px;color:#b71c1c;line-height:1.4}.error-close{flex-shrink:0;background:none;border:none;font-size:20px;color:#d32f2f;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.error-close:hover{color:#c62828}@keyframes slideDown{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}.sync-indicator{position:fixed;bottom:12px;right:12px;background:#fff8e1;border:1px solid #ffe082;border-radius:4px;padding:8px 12px;display:flex;align-items:center;gap:8px;font-size:12px;color:#f57f17;z-index:100;box-shadow:0 1px 4px #0000001a}.sync-dot{width:8px;height:8px;border-radius:50%;background:#f57f17;animation:pulse 2s ease-in-out infinite}.sync-text{font-weight:500}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.loading-screen{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--bg);display:flex;align-items:center;justify-content:center;z-index:2000}.loading-content{text-align:center;display:flex;flex-direction:column;align-items:center;gap:16px}.loading-spinner{width:40px;height:40px;border:3px solid var(--line);border-top-color:var(--hit);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
