:root{font-family:system-ui,'Microsoft YaHei',sans-serif;color:#624722;background:#fff3c8}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(ellipse at 20% 10%,#fffbe9,transparent 55%),#fff3c8}.game-shell{max-width:1280px;margin:auto;padding:28px}header{text-align:center}.back{display:block;text-align:left;color:#8c703b;text-decoration:none;font-weight:700}.eyebrow{font-size:11px;letter-spacing:3px;color:#ab874b;margin:18px 0 8px}h1{font-size:clamp(38px,6vw,64px);margin:0;font-weight:900;color:#735020;text-shadow:0 3px #fff}.subtitle{color:#96763f;line-height:1.8}.game-info{display:flex;justify-content:center;gap:48px;background:#fffaf0;border:1px solid #eedaa3;border-radius:20px;padding:16px;max-width:720px;margin:22px auto 0}.game-info strong{font-size:24px;color:#b27724;font-variant-numeric:tabular-nums}.grade-picker{display:flex;justify-content:center;align-items:center;gap:10px;color:#80632f;font-weight:800}.grade-picker select{border:2px solid #e6cc8a;border-radius:12px;background:#fffaf0;padding:9px 14px;color:#705425;font:inherit}.status{text-align:center;color:#977344;min-height:24px;margin:18px 0;font-size:14px}.board{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:24px;min-width:720px;padding:12px 8px 24px}.board-wrap{overflow-x:auto;padding:4px}.bubble{--bubble:#e89c6e;position:relative;aspect-ratio:1;border:0;border-radius:50%;background:radial-gradient(ellipse at 30% 20%,#ffffffcf,transparent 48%),var(--bubble);box-shadow:inset 6px 8px 12px #ffffff70,inset -9px -12px 18px #492f242f,0 8px 0 color-mix(in srgb,var(--bubble),#6c432c 25%),0 15px 18px #82601b26;color:#382a25;font:800 clamp(19px,2.15vw,29px)/1.25 system-ui,'Microsoft YaHei',sans-serif;cursor:pointer;padding:12px;transition:transform .18s,opacity .25s,box-shadow .18s;overflow-wrap:anywhere;touch-action:manipulation}.bubble:before{content:'';position:absolute;top:10%;left:21%;width:31%;height:15%;border-radius:50%;background:#ffffff80;transform:rotate(-30deg);pointer-events:none}.bubble span{position:relative}.bubble:hover{transform:translateY(-4px)}.bubble.selected{outline:4px solid #85661f;outline-offset:5px;transform:translateY(-5px) scale(1.04)}.bubble.matched{opacity:0;transform:scale(.15);pointer-events:none;visibility:hidden;transition:opacity .25s,transform .25s,visibility 0s .25s}.bubble.wrong{animation:shake .28s}.bubble:focus-visible{outline:4px dashed #594521;outline-offset:5px}.complete{position:fixed;inset:0;z-index:10;display:grid;place-content:center;justify-items:center;background:#fff5d6f2;text-align:center;padding:24px;backdrop-filter:blur(7px)}[hidden]{display:none!important}.trophy{font-size:84px}.complete h2{font-size:clamp(28px,6vw,44px);margin:14px 0}.complete p{font-size:20px}.continue{background:#e6a43e;color:#3d2c13;box-shadow:0 6px 0 #bd7d24;border:0;border-radius:16px;padding:18px 35px;font:800 20px system-ui;cursor:pointer}.continue:disabled{opacity:.5;cursor:default}footer{text-align:center;color:#a0824c;font-size:13px;line-height:1.8;margin-top:20px}.offline-note{font-size:12px;color:#9a804f;text-align:center}a.game-link{color:inherit}@keyframes shake{25%{translate:-6px}75%{translate:6px}}@media(max-width:760px){.game-shell{padding:18px 10px}.board{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;min-width:0}.game-info{gap:20px;padding:13px;font-size:12px}.game-info strong{font-size:20px}.subtitle{font-size:13px}.bubble{font-size:21px}.status{font-size:12px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* Compact bubbles: keep the six-column layout while reducing targets and labels. */
.bubble{width:50%;justify-self:center;font-size:clamp(10px,1.08vw,15px);padding:6px;box-shadow:inset 3px 4px 7px #ffffff70,inset -5px -6px 9px #492f242f,0 4px 0 color-mix(in srgb,var(--bubble),#6c432c 25%),0 8px 10px #82601b26}
.bubble:before{top:10%;left:21%}.bubble.selected{outline-width:2px;outline-offset:3px;transform:translateY(-3px) scale(1.04)}.bubble:focus-visible{outline-width:2px;outline-offset:3px}
@media(max-width:760px){.bubble{width:50%;font-size:clamp(9px,2.8vw,12px);padding:4px}.board{gap:10px 8px}}

/* Responsive board refinement: five columns on phones, larger bubbles on desktop. */
@media(min-width:761px){.bubble{width:65%;font-size:clamp(13px,1.4vw,19px);padding:8px}}
@media(max-width:760px){.board{grid-template-columns:repeat(5,minmax(0,1fr));gap:10px 7px}.bubble{width:50%;font-size:clamp(9px,2.8vw,12px)}}

/* Phone board: larger, tighter five-column bubbles with clipped labels. */
.bubble span{display:block;width:100%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:760px){.board{gap:6px 2px;padding-left:2px;padding-right:2px}.bubble{width:82%;font-size:clamp(9px,2.65vw,12px);padding:4px;justify-self:center}}

/* Bubble typography: clearer, slightly larger labels for the 30-bubble round. */
.bubble{font-family:system-ui,'Microsoft YaHei','PingFang SC',sans-serif;font-weight:800;letter-spacing:.01em;line-height:1.15;text-rendering:optimizeLegibility}
@media(min-width:761px){.bubble{font-size:clamp(15px,1.68vw,22px)}}
@media(max-width:760px){.bubble{font-size:clamp(11px,3.2vw,14px);letter-spacing:0}}
.game-pickers{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin:18px auto 0}.game-pickers label{display:flex;align-items:center;gap:5px;color:#80632f;font-weight:800}.game-pickers select{border:2px solid #e6cc8a;border-radius:12px;background:#fffaf0;padding:9px 12px;color:#705425;font:inherit}@media(max-width:760px){.game-pickers{gap:6px;font-size:12px}.game-pickers select{padding:7px 8px;font-size:12px}}

/* Keep Chinese meanings short while allowing long English words to wrap. */
.bubble .word-text{display:block;width:100%;white-space:normal;overflow-wrap:anywhere;word-break:break-word;line-height:1.12}
.bubble .meaning-text{display:block;width:100%;white-space:nowrap;overflow:hidden;text-overflow:clip;line-height:1.15}

/* Full labels scroll only when they exceed the visible bubble width. */
.bubble{color:var(--label-color,#493d30);text-shadow:0 1px 0 #ffffff80;overflow:hidden}
.bubble .bubble-label{display:block;width:100%;overflow:hidden;white-space:nowrap;text-overflow:clip;line-height:1.35}
.bubble .bubble-label-track{display:inline-flex;width:max-content;max-width:none;gap:24px;overflow:visible;vertical-align:middle;white-space:nowrap}
.bubble .bubble-label-text{display:block;flex:none;width:auto;overflow:visible;white-space:nowrap;text-overflow:clip}
.bubble.scrolling-label .bubble-label-track{animation:bubble-label-scroll var(--scroll-duration,7s) linear infinite alternate;will-change:transform}
@keyframes bubble-label-scroll{0%,12%{transform:translateX(0)}88%,100%{transform:translateX(var(--scroll-distance))}}
@media(prefers-reduced-motion:reduce){.bubble.scrolling-label .bubble-label-track{animation:none;transform:none}.bubble.scrolling-label .bubble-label{overflow-x:auto;scrollbar-width:none}.bubble-label [data-copy]{display:none}}

.bubble.english-label .bubble-label-track{display:inline-block;white-space:normal;vertical-align:middle}
.bubble.english-label .bubble-label-text{width:100%;text-align:center;white-space:nowrap}
.bubble .english-line{display:block;width:100%;overflow:visible;white-space:nowrap;text-align:center;line-height:1.25}

.game-topbar{display:flex;align-items:center;gap:9px;max-width:760px;margin:16px auto 0;padding:9px;background:#ffffffa8;border-radius:16px;box-shadow:0 3px #d5bb7950}
.game-picker{display:flex;align-items:center;justify-content:center;gap:7px;min-width:0;min-height:44px;flex:1;border:1px solid #dfc78e;border-radius:12px;padding:6px 10px;background:linear-gradient(#fffefa,#fff3d6);box-shadow:0 3px #d8bd82;color:#795b2c;font:800 14px system-ui,'Microsoft YaHei',sans-serif;cursor:pointer}
.game-picker>span:nth-child(2){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.game-picker small{font-size:10px}.game-picker.level-trigger{flex:none;background:linear-gradient(#fff4cf,#ffe5a1)}
.current-round{flex:none;white-space:nowrap;color:#8a6936;font-size:13px;padding:0 6px}.current-round strong{font-size:21px;color:#9c681d}
.game-picker-dialog{position:fixed;width:min(620px,calc(100% - 28px));max-height:85svh;border:2px solid #fff;border-radius:24px;padding:24px;background:linear-gradient(150deg,#fffdf4,#fff0cc);color:#795b2c;box-shadow:0 8px #c9aa66,0 24px 70px #503c3244;overscroll-behavior:contain}
.game-picker-dialog::backdrop{background:#503c3270;backdrop-filter:blur(6px)}body:has(.game-picker-dialog[open]){overflow:hidden}.game-picker-dialog h2{text-align:center;margin:4px 0;font-size:25px}.game-picker-dialog p{text-align:center;font-size:13px;color:#947749;margin:8px 0 18px}.picker-emblem{text-align:center;font-size:34px}.close-picker{position:absolute;right:12px;top:8px;border:0;background:#fff9;border-radius:50%;width:36px;height:36px;color:#8c703b;font-size:26px;cursor:pointer}.picker-category-grid,.picker-level-grid{display:grid;gap:12px}.picker-level-grid{grid-template-columns:repeat(auto-fill,minmax(90px,1fr))}.picker-option{display:flex;align-items:center;gap:14px;border:2px solid #e9d7b0;border-radius:15px;padding:12px 16px;background:#fffaf0;color:#795b2c;box-shadow:0 3px #dfc897;font:800 16px system-ui,'Microsoft YaHei',sans-serif;text-align:left;cursor:pointer}.picker-option.selected{border-color:#c59a43;background:#ffedb9}.picker-option-art{font-size:28px;flex:none}.picker-level-grid .picker-option{flex-direction:column;gap:6px;padding:12px 5px;text-align:center;font-size:14px}.game-picker:focus-visible,.picker-option:focus-visible{outline:3px solid #967038;outline-offset:3px}
@media(max-width:600px){.game-topbar{gap:5px;padding:7px 5px;margin-top:12px}.game-picker{gap:4px;min-height:40px;padding:5px 6px;font-size:12px;border-radius:10px}.game-picker>span:first-child{display:none}.game-picker.level-trigger{font-size:11px}.current-round{font-size:11px;padding:0 2px}.current-round strong{font-size:17px}.game-picker-dialog{padding:22px 14px}.picker-level-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}

header::after{content:'';display:block;clear:both}.speech-toggle{float:left;position:relative;display:inline-grid;grid-template-columns:1fr 1fr;align-items:center;width:158px;height:32px;margin:0 12px 8px 0;padding:3px;border:1px solid #aacdd9;border-radius:999px;background:#deedf2;color:#738792;font:700 11px system-ui,'Microsoft YaHei',sans-serif;cursor:pointer;isolation:isolate}.speech-toggle-thumb{position:absolute;top:3px;bottom:3px;left:3px;width:calc(50% - 3px);border-radius:999px;background:#fff;box-shadow:0 2px 5px #46687925;transition:transform .2s;z-index:-1}.speech-toggle[aria-checked=false] .speech-toggle-thumb{transform:translateX(100%)}.speech-toggle[aria-checked=true] .speech-on{color:#34795e}.speech-toggle[aria-checked=false] .speech-off{color:#5c7180}.speech-toggle:focus-visible{outline:3px solid #438aa7;outline-offset:3px}@media(max-width:600px){.speech-toggle{width:140px;height:30px;font-size:10px;margin-right:8px}}@media(prefers-reduced-motion:reduce){.speech-toggle-thumb{transition:none}}
header .back{display:inline-block;float:left;font-size:12px;line-height:32px}header .eyebrow{clear:both}.speech-toggle{background:#eee3c7;border-color:#d8c38d}.speech-toggle[aria-checked=false] .speech-off{color:#826332}

header{position:relative;padding-top:42px}header .speech-toggle{position:absolute;top:0;left:0;float:none;margin:0}header .member-corner{position:absolute;top:0;right:0;display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 9px;border-radius:999px;background:#ffffff85;color:inherit;text-decoration:none;font-size:12px;font-weight:700;line-height:1;float:none}header .member-corner svg{flex:none}header h1{text-align:center;width:100%;margin-left:auto;margin-right:auto}header .eyebrow{clear:both}@media(max-width:600px){header{padding-top:39px}header .member-corner{height:30px;font-size:11px;gap:4px;padding:0 7px}}

/* Membership benefits dialog, shared by both games. */
.membership-dialog{--member-ink:#28627b;--member-muted:#648693;--member-border:#bbdce8;--member-paper:#e6f5fc;--member-shadow:#93bfce;--member-accent:#cfeef8;width:min(420px,calc(100% - 32px));max-height:85svh;overflow:auto;padding:30px 26px 25px;border:2px solid #ffffffdf;border-radius:26px;background:linear-gradient(150deg,#fbfeff,var(--member-paper));box-shadow:0 7px 0 var(--member-shadow),0 24px 75px #173d4d40;color:var(--member-ink);text-align:center;font-family:system-ui,'Microsoft YaHei',sans-serif}
.membership-dialog::backdrop{background:#244f657a;backdrop-filter:blur(6px)}body:has(.membership-dialog[open]){overflow:hidden}.membership-dialog.membership-warm{--member-ink:#795b2c;--member-muted:#947749;--member-border:#e8d3a2;--member-paper:#fff0cc;--member-shadow:#c9aa66;--member-accent:#ffedbc}.membership-warm::backdrop{background:#503c3270}.membership-emblem{display:grid;place-items:center;width:64px;height:64px;margin:2px auto 15px;border-radius:22px;background:linear-gradient(140deg,#fff,var(--member-accent));border:1px solid var(--member-border);box-shadow:0 4px 0 var(--member-border);color:#c49942;font-size:38px}.membership-dialog h2{margin:0;font-size:26px;line-height:1.4;color:var(--member-ink);text-shadow:0 2px #fff}.membership-subtitle{margin:8px 0 18px;font-size:13px;color:var(--member-muted);line-height:1.6}.membership-dialog .membership-message{margin:0 0 22px;padding:15px 16px;border:1px solid var(--member-border);border-radius:16px;background:#ffffff91;color:var(--member-ink);font-size:14px;line-height:1.9;text-align:left;overflow-wrap:anywhere}.membership-actions{display:grid;gap:12px}.membership-primary,.membership-secondary{display:block;width:100%;box-sizing:border-box;border-radius:13px;padding:12px 14px;font:800 14px/1.5 system-ui,'Microsoft YaHei',sans-serif;text-align:center;text-decoration:none;cursor:pointer}.membership-primary{border:1px solid #e6bd65;background:linear-gradient(#ffdc8e,#f3bf5b);box-shadow:0 4px #cf9e45;color:#70501f}.membership-secondary{border:1px solid var(--member-border);background:#ffffff80;color:var(--member-muted)}.membership-dismiss{position:absolute;top:11px;right:12px;width:34px;height:34px;border:0;border-radius:50%;background:#ffffff9c;color:var(--member-muted);font:26px/1 system-ui;cursor:pointer}.membership-primary:hover{filter:brightness(1.04)}.membership-secondary:hover,.membership-dismiss:hover{background:#fff}.membership-dialog :focus-visible{outline:3px solid var(--member-ink);outline-offset:3px}@media(max-width:600px){.membership-dialog{padding:26px 20px 22px}.membership-dialog h2{font-size:24px}}

.picker-level-grid .picker-option{position:relative}.picker-level-grid .progress-incomplete{background:#e3e4e8;color:#838792;border-color:#c8cad1;box-shadow:0 3px #b9bcc5}.picker-level-grid .progress-completed{background:linear-gradient(140deg,#e1f7dc,#d3eddf);color:#3f7b59;border-color:#8bbd9c;box-shadow:0 3px #9bbc9e}.picker-level-grid .picker-option.selected{outline:3px solid #c79e4f;outline-offset:2px}.progress-check{position:absolute;right:5px;top:5px;display:grid;place-items:center;width:19px;height:19px;border-radius:50%;background:#65a97d;color:#fff;font-size:12px}

/* Wider library selector with a compact root tab. */
.game-topbar #primaryPicker{flex:0 0 86px;min-width:86px;padding-left:6px;padding-right:6px;font-size:12px}
.game-topbar #secondaryPicker{flex:1 1 250px;min-width:180px}
@media(max-width:600px){.game-topbar #primaryPicker{flex:0 0 58px;min-width:58px;font-size:11px}.game-topbar #secondaryPicker{flex:1 1 auto;min-width:118px}}

/* Compact rounded-square tiles, retaining the existing tile palette. */
.board{max-width:860px;min-width:0;margin-inline:auto;gap:8px}
.board .bubble{width:100%;border-radius:14px}
.board .bubble.selected{outline-offset:1px;transform:translateY(-2px)}
.board .bubble:focus-visible{outline-offset:1px}
@media(max-width:760px){.board{gap:6px}.board .bubble{border-radius:10px}}

/* Match the root tab width to the level control. */
.game-topbar #primaryPicker{flex:0 0 116px;min-width:116px}
@media(max-width:600px){.game-topbar #primaryPicker{flex:0 0 86px;min-width:86px}}
