:root{--paper:#f8f7f1;--surface:#fffefa;--ink:#303d32;--muted:#687064;--green:#39664e;--green-light:#edf1e4;--line:#e5e5d9;--orange:#df754c;--orange-light:#f9e9de;--yellow:#f4cd6c;--blue:#e8eef1;--radius:20px;--zhuyin:"BiauKai","DFKai-SB","KaiTi","Noto Sans TC",sans-serif;--body:"Microsoft JhengHei","PingFang TC",sans-serif}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--body);font-size:16px;line-height:1.6}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit}button:disabled{cursor:default}button,a{touch-action:manipulation}a{color:var(--green)}button:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:3px solid #ae5b2d;outline-offset:5px}button{border:0}button:not(:disabled),a{transition:background .18s,transform .18s,box-shadow .18s}button:not(:disabled):active{transform:translateY(2px)}svg.icon{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}img{max-width:100%}.skip{position:fixed;top:-100px;left:16px;z-index:100;background:white;padding:16px}.skip:focus{top:12px}
.sidebar{position:fixed;inset:0 auto 0 0;width:236px;background:#f0f0e6;border-right:1px solid var(--line);padding:36px 22px;display:flex;flex-direction:column;z-index:10}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;font-size:21px;font-weight:800;letter-spacing:1px;line-height:1.5}.brand small{display:block;font-size:11px;font-weight:400;letter-spacing:2px;color:var(--muted);margin-top:3px}.brand-mark{display:grid;place-items:center;background:var(--green);color:#fff7dd;border-radius:14px;width:47px;height:51px;font:32px var(--zhuyin);transform:rotate(-7deg)}.nav-caption{font-size:11px;letter-spacing:2px;margin:47px 13px 16px;color:var(--muted)}nav{display:grid;gap:8px}.nav-item{display:flex;gap:13px;align-items:center;background:transparent;width:100%;text-align:left;min-height:52px;padding:12px 16px;border-radius:12px;font-size:15px;font-weight:600;color:#61695b}.nav-item.active{background:var(--green);color:#fff}.nav-item:hover:not(.active){background:#e5e8db}.nav-divider{height:1px;background:var(--line);margin:12px 10px}.sidebar-friend{margin-top:auto;padding-top:40px;text-align:center}.sidebar-friend img{display:block;margin:0 auto 7px}.sidebar-friend strong{font-size:14px}.sidebar-friend p{font-size:12px;color:var(--muted);margin:5px 0 25px}.local-label{font-size:10px;color:var(--muted);background:#e6e8dc;border-radius:20px;padding:7px 11px}.local-label::first-letter{color:var(--green)}
.page{margin-left:236px}.topbar{height:88px;border-bottom:1px solid var(--line);padding:0 46px;display:flex;align-items:center;justify-content:space-between;gap:16px}.breadcrumb{font-size:12px;color:var(--muted);letter-spacing:1px}.breadcrumb span{margin:0 12px;color:#a6ac9b}.breadcrumb strong{font-weight:500;color:var(--ink)}.star-pill{border:1px solid #eadfbd;background:#fff8e3;border-radius:24px;min-height:43px;padding:8px 18px;font-size:13px;font-weight:600;white-space:nowrap}.star-pill>span:first-child{color:#986a17;font-size:20px;margin-right:6px}main{max-width:1280px;margin:0 auto;padding:35px 46px 24px;min-height:calc(100vh - 166px)}main:focus{outline:none}.warning{background:#fff0d4;border-bottom:1px solid #d4bc7e;padding:12px 24px;color:#63491b;font-size:14px}.intro{display:flex;align-items:center;justify-content:space-between;margin-bottom:25px;gap:16px}.eyebrow{display:block;color:var(--green);letter-spacing:3px;font-size:11px;font-weight:700;margin-bottom:7px}.intro h1{font-size:27px;letter-spacing:1px;margin:0 0 4px}.intro p{font-size:13px;color:var(--muted);margin:0}.intro-tag{display:flex;gap:8px;align-items:center;border:1px solid var(--line);border-radius:24px;padding:8px 13px;color:var(--muted);font-size:12px;white-space:nowrap}.intro-tag .icon{width:17px}
.hero{position:relative;isolation:isolate;overflow:hidden;border-radius:24px;background:#e8eddd;min-height:292px;display:flex;align-items:center;padding:35px 40px;border:1px solid #e1e5d3}.hero-copy{z-index:2;max-width:64%}.small-tag{display:inline-flex;align-items:center;gap:7px;border-radius:20px;background:#f7f8eb;color:var(--green);font-size:11px;letter-spacing:1px;padding:5px 11px}.small-tag span{width:6px;height:6px;border-radius:50%;background:var(--green)}.hero h2{font-size:34px;line-height:1.45;letter-spacing:2px;margin:16px 0 10px;font-weight:800}.hero h2 em{font-style:normal;color:var(--green)}.hero p{font-size:13px;color:#626f58;margin:0 0 22px;line-height:1.8}.primary,.secondary,.danger{min-height:50px;padding:12px 22px;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;gap:10px;font-size:15px;font-weight:700}.primary{background:var(--green);color:#fff}.primary:hover:not(:disabled){background:#294f3c;box-shadow:0 4px 0 #28453120}.primary:disabled{background:#dce2d4;color:#6d7665}.secondary{background:#f0f1e8;border:1px solid #d9decd}.secondary:hover:not(:disabled){background:#e3e8d8}.danger{background:#a54636;color:white}.hero .primary{background:var(--orange);box-shadow:0 4px 0 #be613e}.hero .primary:hover{background:#c75e39}.hero-art{position:absolute;right:3%;top:4%;width:37%;height:95%;display:grid;place-items:center}.hero-art:before{content:"";position:absolute;width:220px;height:220px;border-radius:50%;background:#f6f5de;z-index:-1}.hero-art img{width:245px;transform:rotate(3deg);margin-top:40px}.float-symbol{position:absolute;display:grid;place-items:center;width:51px;height:56px;background:var(--surface);border:1px solid #d6dbc3;border-radius:12px;font:30px var(--zhuyin);color:var(--green);box-shadow:0 4px 0 #cbd4bc55}.float-symbol.a{top:6%;left:7%;transform:rotate(-13deg)}.float-symbol.b{top:2%;right:7%;transform:rotate(12deg);color:#b6673f;background:#fff1dd}.float-symbol.c{bottom:17%;right:0;transform:rotate(10deg);font-size:24px}.hero-spark{position:absolute;color:#9baf85;font-size:26px;left:1%;bottom:21%}.hero-dots{position:absolute;right:23%;top:4%;color:#b3bd9c;letter-spacing:6px}
.section-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:29px 0 15px}.section-head h2{font-size:18px;margin:0;display:flex;align-items:center;gap:10px}.section-head h2:before{content:"";height:18px;width:4px;border-radius:3px;background:var(--orange)}.section-head p{font-size:12px;color:var(--muted);margin:0}.learning-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.mode-card{border:1px solid var(--line);border-radius:18px;min-height:210px;background:var(--surface);padding:22px;text-align:left;position:relative;display:flex;flex-direction:column;align-items:flex-start}.mode-card:hover{border-color:#a9b79a;box-shadow:0 6px 0 #d9ddcc66;transform:translateY(-3px)}.mode-top{width:100%;display:flex;align-items:center;justify-content:space-between;margin-bottom:17px}.mode-number{font-size:11px;font-family:Georgia,serif;color:#929583;letter-spacing:2px}.mode-symbol{display:grid;place-items:center;width:53px;height:53px;border-radius:15px;background:var(--green-light);font:32px var(--zhuyin);color:var(--green)}.mode-symbol .icon{width:29px;height:29px}.mode-card.orange .mode-symbol{background:var(--orange-light);color:#a55733}.mode-card.blue .mode-symbol{background:var(--blue);color:#4c6c7c}.mode-card.yellow .mode-symbol{background:#f8f0d8;color:#92732b}.mode-card h3{font-size:17px;margin:0 0 6px}.mode-card p{font-size:12px;color:var(--muted);margin:0 0 17px;line-height:1.8}.mode-bottom{margin-top:auto;display:flex;width:100%;align-items:center;justify-content:space-between;font-size:10px;letter-spacing:1px;color:#66705e}.mode-bottom .icon{width:17px;height:17px}.overview{display:grid;grid-template-columns:1.5fr 1fr;gap:18px;margin-top:23px}.progress-card,.review-card{border:1px solid var(--line);border-radius:17px;background:var(--surface);padding:22px 25px;display:flex;align-items:center;gap:20px}.progress-ring{width:65px;height:65px;flex-shrink:0;position:relative}.progress-ring svg{width:65px;height:65px;transform:rotate(-90deg)}.progress-ring circle{fill:none;stroke:#edf0e5;stroke-width:5}.progress-ring .fill{stroke:var(--green);stroke-dasharray:176;stroke-dashoffset:var(--offset);stroke-linecap:round}.progress-ring span{position:absolute;inset:0;display:grid;place-items:center;font-size:19px;font-weight:700}.progress-copy{flex:1}.progress-copy h3,.review-card h3{font-size:14px;margin:0 0 4px}.progress-copy p,.review-card p{font-size:11px;color:var(--muted);margin:0}.text-button{background:transparent;color:var(--green);font-size:12px;min-height:44px;display:inline-flex;align-items:center;gap:5px;padding:8px 4px;white-space:nowrap}.review-icon{background:#f5eddf;width:48px;height:48px;display:grid;place-items:center;border-radius:50%;color:#a9783b;flex-shrink:0}.review-card .text-button{margin-left:auto}.review-card{gap:14px}footer{max-width:1280px;margin:0 auto;padding:20px 46px;display:flex;justify-content:space-between;align-items:center;gap:16px;color:var(--muted);font-size:10px}footer button{font-size:10px;color:var(--muted);background:transparent;min-height:36px;padding:6px 0;text-decoration:underline;text-underline-offset:4px}
.back-button{display:flex;align-items:center;gap:6px;background:transparent;color:var(--muted);font-size:13px;min-height:44px;margin:-8px 0 12px;padding:6px 0}.learn-layout{display:grid;grid-template-columns:270px 1fr;gap:24px}.reader{background:#e8eddf;border-radius:var(--radius);padding:25px;text-align:center;align-self:start;position:sticky;top:25px;border:1px solid #dce3cf}.reader .big-symbol{font:125px var(--zhuyin);line-height:1.4;color:var(--green);display:block;margin:16px 0}.reader .badge{font-size:12px;letter-spacing:2px;color:var(--green)}.reader .primary{width:100%}.reader img{height:80px;width:80px;display:block;margin:20px auto 0}.audio-status{min-height:42px;margin:12px 0 0;font-size:12px;color:var(--muted);line-height:1.7}.audio-status.error{color:#a03d2b}.audio-status.playing{color:var(--green)}.group-tabs{display:flex;gap:9px;flex-wrap:wrap;margin-bottom:22px}.group-tab{border:1px solid var(--line);border-radius:22px;background:var(--surface);min-height:44px;padding:8px 18px;font-size:14px}.group-tab.active{background:var(--green);color:white;border-color:var(--green)}.symbol-section{margin-bottom:22px}.symbol-section h2{font-size:15px;margin:0 0 13px;display:flex;align-items:center;gap:10px}.symbol-section h2 small{font-weight:400;color:var(--muted);font-size:11px}.symbol-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px}.symbol-button{position:relative;border:1px solid var(--line);border-radius:12px;min-height:78px;background:var(--surface);font:34px var(--zhuyin)}.symbol-button:hover{background:#edf1e5}.symbol-button.selected{background:var(--green);border-color:var(--green);color:white}.seen-dot{position:absolute;bottom:5px;right:7px;font:10px var(--body);color:var(--green)}.selected .seen-dot{color:#e2ebc8}.learn-note{font-size:12px;color:var(--muted);margin-top:20px;line-height:1.9}
.quiz-wrap{max-width:820px;margin:0 auto}.quiz-top{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;font-size:13px;color:var(--muted)}.quiz-track{width:100%;height:7px;background:#e5e8da;border-radius:8px;overflow:hidden;margin-bottom:26px}.quiz-track span{display:block;height:100%;background:var(--green);border-radius:8px;transition:width .2s}.quiz-card{background:var(--surface);border:1px solid var(--line);border-radius:24px;padding:32px 36px;text-align:center}.quiz-card h1{font-size:25px;line-height:1.5;margin:0 0 6px}.quiz-instruction{font-size:13px;color:var(--muted);margin:0 0 22px}.listen-button{border:1px solid #ced8bc;border-radius:50%;background:#eaf0df;width:112px;height:112px;display:grid;place-content:center;gap:5px;margin:26px auto 14px;color:var(--green);font-size:12px}.listen-button .icon{width:35px;height:35px;margin:auto}.listen-button:hover{background:#dde8cb}.listen-button.playing{animation:pulse 1.2s infinite}.listen-button:disabled{opacity:.7}.listen-note{font-size:11px;color:var(--muted);margin:0 0 22px}.choices{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:22px 0}.answer{font:48px var(--zhuyin);background:var(--paper);border:2px solid #e1e4d7;border-radius:15px;min-height:112px;position:relative}.answer:hover:not(:disabled){border-color:#8ba27a;background:#eef3e5}.answer.correct{border-color:var(--green);background:#e6eedc;color:var(--green)}.answer.wrong{border-color:#c07857;background:#fcf0e8;color:#8c4d31}.answer:disabled:not(.correct):not(.wrong){opacity:.5}.answer small{position:absolute;left:9px;top:7px;font:10px var(--body);color:var(--muted)}.answer .result-mark{position:absolute;right:8px;bottom:3px;font:19px var(--body)}.feedback{min-height:43px;padding:10px 12px;font-size:14px;margin:10px 0;border-radius:10px;color:var(--muted)}.feedback.success{background:#edf3e5;color:#315e43}.feedback.retry{background:#fff0df;color:#8b4c29}.quiz-actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin-top:12px}.quiz-actions button{min-width:150px}.buddy-note{display:flex;justify-content:center;align-items:center;gap:8px;margin:18px 0 0;color:var(--muted);font-size:12px}.buddy-note img{width:39px;height:39px}.picture-hint{display:flex;align-items:center;justify-content:center;gap:18px;background:#f5f4eb;border-radius:15px;padding:16px;margin-top:20px}.picture-hint .emoji{font-size:45px}.picture-hint .word{font-size:30px;font-weight:700}.picture-hint .hint{font-size:12px;color:var(--muted)}.notation{font-family:var(--zhuyin);white-space:nowrap;letter-spacing:2px}.reference{font-size:31px;color:var(--green);margin-top:6px}.build-slots{display:flex;align-items:center;justify-content:center;gap:10px;min-height:85px;margin:22px 0 12px}.slot{width:62px;height:72px;border:2px dashed #c5ceb8;border-radius:12px;background:#fbfcf5;display:grid;place-items:center;font:38px var(--zhuyin)}.slot.filled{background:#eaf0de;border:2px solid #9aaf88}.slot:disabled{color:var(--ink)}.fixed-tone{font:35px var(--zhuyin);color:var(--green);min-width:22px}.spell-choices{grid-template-columns:repeat(5,minmax(0,1fr));max-width:560px;margin:15px auto}.spell-choices .answer{min-height:80px;font-size:37px}.tone-choices{grid-template-columns:repeat(5,minmax(0,1fr))}.tone-choice{font-family:var(--body);min-height:120px;padding:14px 4px}.tone-choice .notation{display:block;font-size:26px}.tone-choice .tone-name{font-size:14px;display:block;margin-top:8px}.tone-tip{font-size:12px;color:var(--muted);margin-top:20px}.review-badge{display:inline-block;background:#fff0d5;padding:4px 12px;border-radius:15px;font-size:11px;color:#7f5c23}
.results-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-bottom:25px}.stat-card{border:1px solid var(--line);border-radius:18px;padding:25px;background:var(--surface)}.stat-card .stat-label{font-size:13px;color:var(--muted)}.stat-card strong{display:block;color:var(--green);font-size:39px;line-height:1.6}.stat-card p{font-size:11px;color:var(--muted);margin:4px 0 0}.star-color{color:#986a17!important}.results-panel{border:1px solid var(--line);border-radius:20px;background:var(--surface);padding:28px;margin-bottom:20px}.results-panel h2{font-size:18px;margin:0 0 8px}.results-panel>p{font-size:13px;color:var(--muted)}.mini-symbols{display:flex;gap:8px;flex-wrap:wrap;margin:20px 0}.mini-symbols span{width:43px;height:48px;display:grid;place-items:center;background:#edf1e4;border-radius:9px;font:25px var(--zhuyin);color:var(--green)}.empty-state{text-align:center;padding:25px 12px}.empty-state img{width:110px;display:block;margin:auto}.empty-state p{font-size:14px;color:var(--muted)}.wrong-list{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0}.wrong-item{padding:8px 13px;border-radius:9px;background:#f4f1e5;font-size:14px}.wrong-item small{color:var(--muted);font-size:10px;margin-right:8px}.result-trophy{font-size:60px;display:block;margin-bottom:8px}.completion{text-align:center;max-width:650px;margin:24px auto;background:var(--surface);border:1px solid var(--line);border-radius:24px;padding:40px}.completion h1{font-size:28px;margin:8px 0}.completion p{color:var(--muted);font-size:14px}.completion-score{font-size:48px;color:var(--green);font-weight:800;margin:20px 0 0}.completion-score small{font-size:17px;color:var(--muted);font-weight:400}.completion .primary{margin:10px}.reset-row{display:flex;justify-content:flex-end;margin-top:24px}.reset-row button{background:transparent;color:#8f4d3b;text-decoration:underline;min-height:44px;font-size:12px}dialog{border:1px solid var(--line);border-radius:22px;width:min(600px,calc(100% - 32px));max-height:85vh;padding:0;background:var(--surface);color:var(--ink)}dialog::backdrop{background:#23372c80;backdrop-filter:blur(3px)}.dialog-body{padding:30px}.dialog-body h2{margin:0 0 16px;font-size:24px}.dialog-body h3{font-size:17px}.dialog-body p{font-size:14px;line-height:1.9;color:#596251}.dialog-body>.primary{margin-top:14px;width:100%}.dialog-actions{display:flex;gap:12px;justify-content:flex-end;flex-wrap:wrap;margin-top:25px}.no-margin{margin:0}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
@keyframes pulse{50%{box-shadow:0 0 0 10px #c7d7af55}}@media(min-width:1500px){main{padding-top:45px}.hero{min-height:325px}.hero-art img{width:270px}.hero h2{font-size:39px}.mode-card{min-height:230px}.section-head{margin-top:35px}}@media(max-width:1190px){.sidebar{width:210px;padding:28px 15px}.page{margin-left:210px}.brand{font-size:18px}.topbar{padding:0 30px}main{padding:30px}.learning-grid{gap:12px}.mode-card{padding:17px;min-height:215px}.mode-card h3{font-size:16px}.hero{padding:30px}.hero h2{font-size:30px}.hero-art{right:2%;width:37%}.hero-art img{width:220px}.hero-art:before{width:185px;height:185px}.overview{grid-template-columns:1fr 1fr}.progress-card,.review-card{padding:18px;gap:12px}.progress-card{flex-wrap:wrap}.learn-layout{grid-template-columns:230px 1fr;gap:18px}.symbol-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.tone-choices{gap:8px}.tone-choice .notation{font-size:23px}footer{padding:16px 30px}}@media(max-width:980px){.sidebar{width:88px;padding:25px 12px;align-items:center}.brand>span:last-child,.nav-caption,.nav-item span,.sidebar-friend{display:none}.brand-mark{width:46px;height:48px}nav{margin-top:35px;width:100%}.nav-item{justify-content:center;padding:13px}.nav-item .icon{width:24px;height:24px}.nav-divider{margin:12px 5px}.page{margin-left:88px}.learning-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.mode-card{min-height:185px;padding:20px}.mode-top{margin-bottom:12px}.overview{grid-template-columns:1fr 1fr}.intro-tag{display:none}.hero-copy{max-width:65%}.hero h2{font-size:29px}.hero-art .c{right:-8px}.hero-art .a{left:-10px}.results-grid{gap:12px}.stat-card{padding:18px}.stat-card strong{font-size:33px}.quiz-card{padding:28px}.learn-layout{grid-template-columns:215px 1fr}.symbol-grid{gap:8px}.symbol-button{min-height:68px;font-size:29px}}@media(max-width:680px){.sidebar{position:static;width:auto;padding:14px 18px 0;display:block;border-right:0;border-bottom:1px solid var(--line);background:#f0f0e6}.brand{font-size:18px;justify-content:center}.brand>span:last-child{display:block}.brand-mark{width:37px;height:39px;font-size:26px;border-radius:10px}.brand small{font-size:9px;margin-top:0}.sidebar nav{display:flex;justify-content:space-between;gap:2px;margin:12px 0 0}.nav-item{flex-direction:column;gap:3px;padding:9px 3px 10px;border-radius:9px 9px 0 0;min-height:58px;font-size:10px;flex:1;line-height:1.5}.nav-item span{display:block;white-space:nowrap}.nav-item .icon{width:19px;height:19px}.nav-divider{display:none}.page{margin-left:0}.topbar{height:65px;padding:0 20px}.breadcrumb{font-size:10px;letter-spacing:0}.breadcrumb span{margin:0 5px}.star-pill{font-size:11px;min-height:38px;padding:5px 11px}.star-pill>span:first-child{font-size:17px}main{padding:24px 18px 10px}.intro{margin-bottom:20px}.intro h1{font-size:24px}.intro p{font-size:12px}.hero{padding:24px;min-height:300px;align-items:flex-start}.hero-copy{max-width:100%}.hero h2{font-size:27px;line-height:1.5;margin-top:15px}.hero p{max-width:66%;font-size:12px;margin-bottom:20px}.hero-art{width:40%;height:70%;top:auto;bottom:0;right:-2%}.hero-art:before{width:140px;height:140px}.hero-art img{width:160px;margin-top:27px}.float-symbol{width:34px;height:38px;font-size:22px;border-radius:9px}.float-symbol.a{top:7%;left:3%}.float-symbol.b{top:14%;right:7%}.float-symbol.c{display:none}.hero-spark{font-size:20px;bottom:17%;left:0}.hero-dots{display:none}.hero .primary{font-size:13px;min-height:46px;padding:11px 16px}.section-head h2{font-size:17px}.section-head p{font-size:10px}.learning-grid{gap:12px}.mode-card{padding:18px 15px;min-height:195px}.mode-card h3{font-size:16px}.mode-card p{font-size:11px;margin-bottom:13px}.mode-symbol{width:44px;height:45px;border-radius:12px;font-size:28px}.mode-symbol .icon{width:25px;height:25px}.mode-top{margin-bottom:13px}.mode-bottom{font-size:9px}.overview{grid-template-columns:1fr;margin-top:18px;gap:12px}.progress-card{flex-wrap:nowrap}.progress-card,.review-card{padding:18px}.progress-ring{width:57px;height:57px}.progress-ring svg{width:57px;height:57px}.progress-ring span{font-size:17px}.review-icon{width:48px;height:48px}.progress-copy h3,.review-card h3{font-size:13px}.progress-copy p,.review-card p{font-size:10px}.text-button{font-size:11px}footer{padding:18px;flex-direction:column;gap:0;font-size:9px}.learn-layout{grid-template-columns:1fr;gap:20px}.reader{position:static;padding:18px;display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:8px}.reader .badge{grid-column:1/-1}.reader .big-symbol{font-size:83px;grid-column:1;grid-row:2/4;margin:0}.reader .primary{grid-column:2;grid-row:2;font-size:13px;padding:10px}.reader .audio-status{grid-column:2;grid-row:3;margin:0;font-size:11px}.reader img{display:none}.symbol-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:7px}.symbol-button{min-height:57px;font-size:28px;border-radius:9px}.group-tabs{gap:7px;margin-bottom:20px}.group-tab{padding:8px 13px;font-size:12px}.symbol-section h2{font-size:14px}.quiz-card{padding:24px 17px;border-radius:18px}.quiz-card h1{font-size:21px}.quiz-instruction{font-size:12px}.choices{gap:9px}.answer{font-size:37px;min-height:85px;border-radius:12px}.quiz-top{font-size:11px}.quiz-track{margin-bottom:20px}.picture-hint{padding:13px;gap:13px}.picture-hint .emoji{font-size:36px}.picture-hint .word{font-size:25px}.reference{font-size:28px}.spell-choices .answer{min-height:68px;font-size:31px}.slot{width:51px;height:60px;font-size:33px}.build-slots{gap:8px;margin:20px 0 8px}.quiz-actions button{min-width:115px;padding:11px 16px;font-size:13px}.tone-choices{grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.tone-choice{min-height:95px}.tone-choice .notation{font-size:25px}.tone-choice .tone-name{font-size:12px}.results-grid{grid-template-columns:1fr;gap:10px}.stat-card{display:grid;grid-template-columns:1fr auto;align-items:center;padding:17px 21px}.stat-card strong{grid-column:2;grid-row:1/3;font-size:30px}.stat-card p{margin-top:0}.results-panel{padding:22px}.completion{padding:30px 20px}.completion h1{font-size:24px}.dialog-body{padding:24px}.dialog-actions button{flex:1;font-size:12px;padding:10px}.feedback{font-size:12px}.tone-tip{font-size:11px}.back-button{font-size:12px}.warning{font-size:12px;padding:12px 18px}}
@media(max-width:360px){.hero{padding:20px}.hero h2{font-size:24px}.hero p{max-width:65%;font-size:11px}.hero-art{right:-4%}.symbol-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.mode-card{padding:14px 12px}.mode-card h3{font-size:14px}.mode-card p{font-size:10px}.mode-number{font-size:9px}.section-head p{font-size:9px}.progress-card{gap:9px}.progress-copy p{font-size:9px}.breadcrumb{font-size:9px}.quiz-card{padding:22px 13px}.answer{min-height:75px;font-size:32px}.tone-choice .notation{font-size:22px}.spell-choices{gap:6px}.spell-choices .answer{font-size:27px}.picture-hint .hint{font-size:11px}}
#main:focus-visible{outline:none}.result-trophy{font-size:60px;display:block;margin-bottom:8px}
.hero .primary{background:#b75532;box-shadow:0 4px 0 #934426}.hero .primary:hover{background:#a54929}.mode-number{color:#727962}
.star-pill>span:first-child,.star-color{color:#936510!important}.mode-number{color:#6a715a}
@media(max-width:680px){.nav-item{min-width:0;flex:1 1 0}.nav-item span{white-space:normal}}
@media(min-width:681px) and (max-width:980px){.nav-item{flex-direction:column;gap:4px;font-size:10px;padding:10px 0}.nav-item span{display:block;white-space:nowrap}}

/* 電腦以實際可視高度排版；長成果頁在內容區捲動，側欄與頁尾不被推走。 */
@media (min-width: 981px) {
  .sidebar { overflow-y: auto; overscroll-behavior: contain; }
  .page { height: 100vh; height: 100dvh; display: flex; flex-direction: column; }
  .topbar, footer { flex: none; }
  main { flex: 1; min-height: 0; width: 100%; overflow-y: auto; overscroll-behavior: contain; }
  footer { width: 100%; }
  .reader { top: 0; }
}

/* 保留大字與可點選尺寸，先收斂留白與陪讀插圖，適應工具列占用的高度。 */
@media (min-width: 981px) and (max-height: 900px) {
  .sidebar { padding-top: 16px; padding-bottom: 16px; }
  .brand { flex-shrink: 0; }
  .brand-mark { width: 44px; height: 46px; font-size: 30px; }
  .nav-caption { display: none; }
  .sidebar nav { flex-shrink: 0; margin-top: 24px; gap: 4px; }
  .nav-item { min-height: 44px; padding-top: 9px; padding-bottom: 9px; }
  .nav-divider { margin-top: 4px; margin-bottom: 4px; }
  .sidebar-friend { flex-shrink: 0; padding-top: 12px; }
  .sidebar-friend img { width: 52px; height: 52px; margin-bottom: 4px; }
  .sidebar-friend p { margin-bottom: 12px; }
  .topbar { height: 56px; }
  main { padding: 12px 32px 8px; }
  footer { min-height: 40px; padding: 2px 32px; }
  .intro { margin-bottom: 12px; }
  .intro .eyebrow { display: none; }
  .intro h1 { font-size: 24px; line-height: 1.25; margin-bottom: 3px; }
  .intro p { font-size: 12px; line-height: 1.5; }
  .intro-tag { padding-top: 5px; padding-bottom: 5px; }
  .learn-layout { grid-template-columns: 210px 1fr; gap: 20px; }
  .reader { padding: 16px; }
  .reader .big-symbol { font-size: clamp(72px, 12dvh, 108px); line-height: 1.25; margin: 8px 0; }
  .reader .primary { min-height: 46px; padding: 10px 12px; }
  .reader .audio-status { margin-top: 8px; min-height: 38px; }
  .reader img { width: 48px; height: 48px; margin-top: 10px; }
  .group-tabs { margin-bottom: 12px; }
  .symbol-section { display: grid; grid-template-columns: 62px 1fr; column-gap: 12px; margin-bottom: 10px; }
  .symbol-section h2 { flex-direction: column; align-items: flex-start; gap: 3px; font-size: 13px; line-height: 1.4; padding-top: 7px; margin-bottom: 0; }
  .symbol-section h2 small { font-size: 10px; }
  .symbol-grid { grid-template-columns: repeat(9, minmax(0, 1fr)); gap: 8px; }
  .symbol-button { min-height: 48px; font-size: 29px; }
  .learn-note { margin: 8px 0 0; font-size: 11px; line-height: 1.6; }
  .back-button { min-height: 28px; padding: 2px 0; margin: 0 0 4px; }
  .quiz-top { margin-bottom: 8px; line-height: 1.5; }
  .quiz-track { height: 6px; margin-bottom: 10px; }
  .quiz-card { padding: 16px 24px; }
  .quiz-card h1 { font-size: 23px; line-height: 1.25; margin-bottom: 4px; }
  .quiz-instruction { font-size: 12px; line-height: 1.5; margin-bottom: 8px; }
  .listen-button { width: 68px; height: 68px; margin: 8px auto 0; gap: 1px; font-size: 10px; }
  .listen-button .icon { width: 27px; height: 27px; }
  .quiz-card .audio-status { min-height: 20px; margin: 6px 0 0; }
  .choices { margin: 10px 0; }
  .answer { min-height: 80px; font-size: 40px; }
  .feedback { min-height: 28px; padding: 4px 10px; margin: 6px 0; font-size: 13px; line-height: 1.5; }
  .quiz-actions { margin-top: 8px; }
  .quiz-actions .primary, .quiz-actions .secondary { min-height: 44px; padding-top: 9px; padding-bottom: 9px; }
  .buddy-note { margin-top: 6px; }
  .buddy-note img { width: 28px; height: 28px; }
  .picture-hint { margin-top: 8px; padding: 10px 14px; }
  .picture-hint > div { display: grid; grid-template-columns: auto auto; column-gap: 14px; align-items: center; }
  .picture-hint .emoji { font-size: 34px; }
  .picture-hint .word { font-size: 24px; line-height: 1.2; text-align: left; }
  .picture-hint .hint { grid-column: 1; grid-row: 2; font-size: 11px; line-height: 1.5; text-align: left; }
  .picture-hint .reference { grid-column: 2; grid-row: 1 / span 2; font-size: 28px; margin: 0; }
  .build-slots { min-height: 60px; margin: 8px 0; }
  .slot { height: 56px; width: 54px; font-size: 34px; }
  .spell-choices { margin: 8px auto; }
  .spell-choices .answer { min-height: 56px; font-size: 32px; }
  .tone-choice { min-height: 88px; padding: 10px 4px; }
  .tone-choice .tone-name { margin-top: 4px; }
  .tone-tip { margin: 10px 0 0; line-height: 1.5; }
  #main[data-view="home"] .hero { min-height: 150px; padding: 20px 28px; }
  #main[data-view="home"] .hero .small-tag, #main[data-view="home"] .hero-copy > p { display: none; }
  #main[data-view="home"] .hero h2 { font-size: 27px; line-height: 1.25; margin: 0 0 12px; }
  #main[data-view="home"] .hero .primary { min-height: 44px; padding: 9px 18px; }
  #main[data-view="home"] .hero-art { top: 0; height: 100%; }
  #main[data-view="home"] .hero-art img { width: 140px; height: 140px; margin: 0; }
  #main[data-view="home"] .hero-art:before { width: 130px; height: 130px; }
  #main[data-view="home"] .float-symbol { width: 38px; height: 42px; font-size: 25px; }
  #main[data-view="home"] .section-head { margin: 14px 0 10px; }
  #main[data-view="home"] .mode-card { min-height: 144px; padding: 14px 18px; }
  #main[data-view="home"] .mode-top { margin-bottom: 8px; }
  #main[data-view="home"] .mode-symbol { width: 36px; height: 36px; border-radius: 10px; font-size: 25px; }
  #main[data-view="home"] .mode-symbol .icon { width: 22px; height: 22px; }
  #main[data-view="home"] .mode-card h3 { font-size: 15px; line-height: 1.4; margin-bottom: 4px; }
  #main[data-view="home"] .mode-card p { font-size: 11px; line-height: 1.5; margin-bottom: 8px; }
  #main[data-view="home"] .overview { margin-top: 14px; }
  #main[data-view="home"] .progress-card, #main[data-view="home"] .review-card { padding: 12px 18px; gap: 12px; }
  #main[data-view="home"] .progress-ring, #main[data-view="home"] .progress-ring svg { width: 44px; height: 44px; }
  #main[data-view="home"] .progress-ring span { font-size: 16px; }
  #main[data-view="home"] .review-icon { width: 40px; height: 40px; }
}
@media (min-width: 1200px) and (max-height: 900px) {
  .symbol-grid { grid-template-columns: repeat(11, minmax(0, 1fr)); }
}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
