:root{--ink:#20324a;--muted:#718095;--cream:#fffaf2;--paper:#fff;--peach:#ffdfc6;--orange:#f27250;--orange-soft:#f9ae64;--butter:#fff2da;--brown:#a15b17;--bg-warm:#fff8ee;--teal:#377d86;--mint:#dcf2e9;--line:#e6e9ed;--shadow:0 12px 35px rgba(53,71,91,.11)}*{box-sizing:border-box}body{margin:0;background:linear-gradient(145deg,var(--bg-warm),#f6fbfa);font-family:-apple-system,BlinkMacSystemFont,"PingFang TC","Noto Sans TC",sans-serif;color:var(--ink);min-height:100vh}button,input{font:inherit}.app-shell{max-width:980px;margin:auto;padding:env(safe-area-inset-top) 26px 44px}.topbar{height:86px;display:flex;align-items:center;justify-content:space-between}.brand{border:0;background:transparent;display:flex;gap:11px;align-items:center;color:var(--ink);padding:0;text-align:left;cursor:pointer}.brand-mark{background:var(--orange);color:#fff;font-weight:800;border-radius:15px;padding:8px 7px;letter-spacing:-2px;box-shadow:0 5px 12px color-mix(in srgb,var(--orange) 38%,transparent)}.brand strong,.brand small{display:block}.brand small{color:var(--teal);font-size:10px;font-weight:800;letter-spacing:1.6px;margin-top:2px}.top-actions{display:flex;align-items:center;gap:10px}.avatar{border:0;background:var(--paper);box-shadow:0 3px 10px #20324a12;cursor:pointer}.avatar{width:42px;height:42px;border-radius:14px;color:#fff;font-weight:800;background:var(--teal)}h1,h2,p{margin-top:0}h1{font-size:clamp(29px,5vw,42px);letter-spacing:-1px;margin-bottom:11px}h2{font-size:22px;margin-bottom:0}.eyebrow{font-size:13px;font-weight:800;color:var(--orange);letter-spacing:.7px;margin-bottom:9px}.intro{color:var(--muted);font-size:16px;line-height:1.65;margin-bottom:22px}.welcome-card{background:var(--peach);border-radius:30px;padding:clamp(26px,5vw,46px);display:flex;justify-content:space-between;align-items:center;overflow:hidden}.mascot{font-size:clamp(90px,17vw,165px);filter:drop-shadow(0 10px 0 #fff4);transform:rotate(-5deg);margin:-10px 0 -35px 25px}.primary-button,.secondary-button,.complete-button,.text-button,.back-button,.mode-tab{border:0;cursor:pointer;font-weight:800}.primary-button{background:var(--orange);color:white;padding:14px 21px;border-radius:16px;box-shadow:0 5px 0 #cc5538;font-size:16px}.primary-button:active{transform:translateY(3px);box-shadow:0 2px 0 #cc5538}.progress-card{background:var(--paper);border-radius:25px;padding:25px 27px;margin:20px 0 36px;box-shadow:var(--shadow)}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:12px}.streak{background:var(--butter);border-radius:99px;padding:9px 13px;color:var(--brown)}.progress-track,.mini-track{height:11px;background:#eef0f1;border-radius:99px;overflow:hidden;margin:19px 0 10px}.progress-track span,.mini-track span{display:block;height:100%;background:linear-gradient(90deg,var(--orange),var(--orange-soft));border-radius:inherit;width:0;transition:width .35s}.muted{color:var(--muted);font-size:13px;margin:0}.text-button{color:var(--teal);background:transparent;padding:8px}.stage-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:17px}.stage-card{background:var(--paper);border:2px solid transparent;border-radius:20px;padding:18px;text-align:left;cursor:pointer;min-height:141px;box-shadow:0 5px 15px #20324a0b;position:relative}.stage-card:hover{border-color:#b8dcd9}.stage-number{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:10px;background:#e9f4f3;color:var(--teal);font-weight:800}.stage-card h3{font-size:16px;margin:11px 0 6px}.stage-card p{font-size:12px;color:var(--muted);line-height:1.45;margin:0}.stage-percent{position:absolute;right:16px;top:20px;color:var(--orange);font-size:13px;font-weight:800}.hidden{display:none}.back-button{background:transparent;color:var(--teal);padding:7px 0;margin:7px 0 20px}.lesson-header{display:flex;justify-content:space-between;gap:25px;align-items:end;margin-bottom:23px}.lesson-header h1{font-size:32px;margin-bottom:7px}.lesson-header .intro{margin:0;max-width:620px}.lesson-progress{min-width:110px;color:var(--muted);font-weight:700;font-size:13px;text-align:right}.mini-track{height:8px;margin:8px 0 0}.mode-tabs{display:flex;background:#edf2f2;border-radius:16px;padding:4px;gap:3px;margin-bottom:15px}.mode-tab{flex:1;background:transparent;border-radius:12px;padding:12px 7px;color:#617078;font-size:15px}.mode-tab.active{background:white;color:var(--teal);box-shadow:0 3px 9px #20324a18}.activity-card{background:white;border-radius:28px;padding:clamp(20px,4vw,40px);box-shadow:var(--shadow);text-align:center}.activity-label{color:var(--muted);font-size:15px}.word-card{background:#f8faf9;border:1px solid #e6edec;border-radius:24px;padding:25px 20px 20px;position:relative}.speaker-button{position:absolute;right:17px;top:15px;border:0;background:#dcf2e9;border-radius:50%;width:44px;height:44px;font-size:20px;cursor:pointer}.word{font:800 clamp(48px,12vw,82px)/1.1 Georgia,serif;color:var(--ink);letter-spacing:1px;margin:8px 0 9px}.hint{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--teal);letter-spacing:3px;margin:0;font-size:16px}.activity-area{min-height:126px;padding:24px 0 4px}.build-instruction,.write-instruction{color:var(--muted);margin:0 0 16px}.letter-bank{display:flex;justify-content:center;gap:9px;flex-wrap:wrap}.letter-button,.letter-chip{min-width:45px;height:49px;border-radius:13px;display:grid;place-items:center;font-size:22px;font-weight:800}.letter-button{border:2px solid #c9e3e0;background:white;color:var(--teal);cursor:pointer}.letter-chip{background:var(--mint);color:var(--teal)}.answer-row{min-height:52px;display:flex;justify-content:center;gap:9px;margin-bottom:18px}.write-input{width:min(100%,390px);font-size:29px;text-align:center;border:0;border-bottom:3px solid #d4e3e2;padding:8px 4px;color:var(--ink);outline:0}.write-input:focus{border-color:var(--teal)}.feedback{font-weight:800;min-height:24px;margin-top:13px}.good{color:#2a8b6b}.try{color:#d66640}.lesson-controls{display:flex;justify-content:space-between;gap:10px;margin-top:20px}.secondary-button,.complete-button{padding:13px 17px;border-radius:14px;font-size:15px}.secondary-button{background:#edf2f2;color:var(--teal)}.complete-button{background:var(--mint);color:#287463}.gentle-tip{text-align:center;color:var(--muted);font-size:13px;margin:20px auto;line-height:1.5}dialog{border:0;border-radius:24px;padding:0;width:min(90vw,420px);box-shadow:0 20px 70px #20324a4d}dialog::backdrop{background:#20324a55}dialog form{padding:31px;position:relative}dialog h2{margin:0 0 22px}dialog label{display:block;font-weight:700;margin-bottom:7px}dialog input{width:100%;border:2px solid var(--line);padding:13px;border-radius:13px;margin-bottom:18px}.dialog-save{width:100%}.close-dialog{position:absolute;right:16px;top:12px;border:0;background:transparent;font-size:28px;color:var(--muted);cursor:pointer}@media (max-width:600px){.app-shell{padding-left:16px;padding-right:16px}.welcome-card{border-radius:24px}.mascot{font-size:86px;margin-right:-15px}.stage-grid{grid-template-columns:1fr}.stage-card{min-height:116px}.lesson-header{display:block}.lesson-progress{text-align:left;margin-top:15px}.lesson-controls .primary-button,.lesson-controls .secondary-button,.lesson-controls .complete-button{padding:12px 10px;font-size:13px}.mode-tab{font-size:13px}}
.backup-actions{display:flex;gap:9px;margin-top:16px}.backup-button{border:0;background:#f1f6f5;color:var(--teal);padding:8px 11px;border-radius:10px;font-size:12px;font-weight:800;cursor:pointer}
button:disabled{opacity:.45;cursor:default}
.view.hidden,.hidden{display:none}
[hidden]{display:none!important}
.sync-pill{font-size:12px;font-weight:800;color:var(--muted);background:#fff;border-radius:99px;padding:7px 11px;box-shadow:0 3px 10px #20324a12}
.stage-bar{display:block;height:6px;background:#eef0f1;border-radius:99px;margin-top:12px;overflow:hidden}.stage-bar span{display:block;height:100%;background:linear-gradient(90deg,var(--orange),var(--orange-soft))}
.unit-list{display:grid;gap:12px}
.unit-card{background:var(--paper);border:2px solid transparent;border-radius:20px;padding:16px 18px;text-align:left;cursor:pointer;box-shadow:0 5px 15px #20324a0b;color:var(--ink)}.unit-card:hover{border-color:#b8dcd9}
.unit-head{display:flex;justify-content:space-between;align-items:center}.unit-head h3{margin:0;font-size:17px}.unit-head span{color:var(--orange);font-weight:800;font-size:13px}
.chip-row{display:flex;flex-wrap:wrap;gap:6px;margin-top:11px}
.word-chip{font:600 14px Georgia,serif;padding:4px 9px;border-radius:9px;background:#f1f4f5;color:#617078}.word-chip.p{background:var(--butter);color:var(--brown)}.word-chip.m{background:var(--mint);color:#287463}
.sentence-card{background:var(--paper);border-radius:24px;padding:20px 22px;margin-top:22px;box-shadow:var(--shadow)}
.sentence-row{display:flex;gap:12px;align-items:center;width:100%;border:0;background:transparent;text-align:left;padding:10px 4px;border-top:1px solid var(--line);cursor:pointer;color:var(--ink)}.sentence-row:first-child{border-top:0}
.sentence-row b{display:block;font:600 19px/1.35 Georgia,serif}.sentence-row small{color:var(--muted);font-size:13px}
.sentence-play{flex:none;width:38px;height:38px;border-radius:50%;background:var(--mint);display:grid;place-items:center}
.audio-buttons{position:absolute;right:15px;top:15px;display:flex;flex-direction:column;gap:8px}.audio-buttons .speaker-button{position:static}.speaker-button.slow{background:var(--butter)}
.word-emoji{font-size:44px;margin:0;min-height:10px;line-height:1.1}
.meaning{color:var(--muted);font-size:17px;margin:12px 0 0}
.hint{font-family:Georgia,serif;letter-spacing:0;font-size:24px;cursor:pointer}
.chunk{display:inline-block;padding:2px 6px;border-radius:8px;transition:background .2s,transform .2s}.chunk.focus{color:var(--orange);font-weight:800}.chunk.magic{color:#8a4fd3;font-weight:800}.chunk.lit{background:#ffe3a3;transform:translateY(-3px)}
.dash{color:#b7c3c8;margin:0 2px}
.word-card.mastered{border-color:#bfe6d4;background:#f4fbf7}
.word-card.pop{animation:pop .45s}@keyframes pop{40%{transform:scale(1.035)}}
.read-actions{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin-top:14px}
.letter-button{min-width:56px;padding:0 12px;font-family:Georgia,serif}.letter-chip{min-width:48px;padding:0 10px;font-family:Georgia,serif}
.shake{animation:shake .4s}@keyframes shake{25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}
.write-row{display:flex;justify-content:center;gap:10px;align-items:center}
.done-card{background:var(--peach);border-radius:30px;padding:50px 30px;text-align:center;margin-top:30px}.done-emoji{font-size:90px}
dialog form{max-height:88vh;overflow:auto}dialog h3{font-size:15px;margin:22px 0 10px}
.switch-row{display:flex!important;align-items:center;gap:9px;font-weight:600!important}.switch-row input{width:auto!important;margin:0!important}
.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.stats-grid div{background:#f5f8f8;border-radius:12px;padding:10px 6px;text-align:center}.stats-grid b{display:block;font-size:22px;color:var(--teal)}.stats-grid span{font-size:11px;color:var(--muted)}
.week-bars{display:flex;gap:6px;height:80px;align-items:flex-end;margin-top:12px}.bar{flex:1;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;position:relative}.bar span{width:100%;background:var(--orange-soft);border-radius:6px 6px 2px 2px;min-height:2px}.bar small{font-size:11px;color:var(--muted);margin-top:3px}.bar em{position:absolute;top:0;font-size:10px;font-style:normal;color:var(--muted)}
.login-row{display:flex;gap:8px}.login-row input{margin:0!important}
.backup-actions{flex-wrap:wrap}.backup-button.danger{color:#c4523a;background:#fdf0ec}
.dialog-save{margin-top:20px}
@media (max-width:600px){.stats-grid{grid-template-columns:repeat(2,1fr)}.hint{font-size:20px}}
.slot-row{display:flex;justify-content:center;gap:7px;flex-wrap:wrap;margin-bottom:18px}
.slot{width:42px;height:52px;border-bottom:3px solid #d4e3e2;display:grid;place-items:center;font:700 30px Georgia,serif;color:var(--ink)}
.slot.cursor{border-color:var(--orange)}.slot.filled{border-color:var(--teal)}.slot.right{color:#2a8b6b;border-color:#2a8b6b}
.soft-keyboard{display:grid;gap:8px;max-width:720px;margin:0 auto;user-select:none;-webkit-user-select:none;touch-action:manipulation}
.key-row{display:flex;justify-content:center;gap:6px}
.key{flex:0 1 60px;min-width:0;height:56px;border:0;border-radius:12px;background:#fff;box-shadow:0 3px 0 #c9d6d8,0 0 0 1.5px #dbe6e7 inset;font:700 24px Georgia,serif;color:var(--teal);cursor:pointer;-webkit-tap-highlight-color:transparent}
.key:active{transform:translateY(2px);box-shadow:0 1px 0 #c9d6d8,0 0 0 1.5px #dbe6e7 inset;background:#f1f7f6}
.soft-keyboard.easy .key{flex-basis:72px;height:64px;font-size:28px}
.soft-keyboard.full .key{flex-basis:56px}
.soft-keyboard .key.wide{flex:0 1 130px;height:52px;font:800 16px -apple-system,BlinkMacSystemFont,"PingFang TC",sans-serif}
.key.go{background:var(--mint);color:#287463}
@media (max-width:600px){.key{height:48px;font-size:20px}.soft-keyboard.full .key-row{gap:4px}.slot{width:32px;height:44px;font-size:24px}}
.word-card.reading .audio-buttons{visibility:hidden}
.choice-row{display:flex;justify-content:center;gap:12px;flex-wrap:wrap}
.choice-button{border:2px solid #c9e3e0;background:#fff;border-radius:18px;cursor:pointer;color:var(--ink);-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.choice-row.pictures .choice-button{width:104px;height:104px;font-size:56px;line-height:1}
.choice-row.meanings .choice-button{min-width:120px;max-width:100%;min-height:64px;padding:10px 16px;font:800 20px -apple-system,BlinkMacSystemFont,"PingFang TC",sans-serif}
.choice-button:active{transform:translateY(2px)}
.choice-button.right{border-color:#2a8b6b;background:var(--mint)}
.choice-button.wrong{opacity:.35;border-color:var(--line)}
@media (max-width:600px){.choice-row.pictures .choice-button{width:88px;height:88px;font-size:46px}.choice-row.meanings .choice-button{font-size:17px}}
.chunk-slot{width:auto;min-width:64px;padding:0 8px;background:none;border-top:0;border-left:0;border-right:0;cursor:pointer;-webkit-tap-highlight-color:transparent}
.slot.wrong{color:var(--orange);border-color:var(--orange)}
.grapheme-bank{max-width:640px;margin:0 auto}
.grapheme-bank.easy .letter-button{min-width:68px;height:60px;font-size:26px}
@media (max-width:600px){.chunk-slot{min-width:50px}}
dialog select{width:100%;border:2px solid var(--line);padding:12px;border-radius:13px;margin-bottom:18px;font:inherit;background:#fff;color:var(--ink)}
.word-card.sentence-card .word{font-size:clamp(24px,4.4vw,38px);line-height:1.35;font-family:Georgia,serif}
.choice-row.sentences{flex-direction:column;align-items:stretch;max-width:560px;margin:0 auto}
.choice-row.sentences .choice-button{min-height:56px;padding:12px 16px;font:700 18px -apple-system,BlinkMacSystemFont,"PingFang TC",sans-serif;text-align:left}
.done-actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap}
.parent-link{display:inline-block;text-decoration:none;margin:12px 0 4px}
.parent-page .brand{text-decoration:none}
.parent-status{margin:0 0 16px;color:var(--muted);font-weight:700}.parent-status.error{color:#c4523a}
.parent-notice{background:var(--butter);color:#8a4d12;border-radius:16px;padding:14px 16px;margin:0 0 18px;line-height:1.6}
.parent-section{background:var(--paper);border-radius:22px;padding:22px 24px;margin:0 0 18px;box-shadow:var(--shadow)}
.parent-section h2{margin:0}.parent-section h3{font-size:15px;margin:20px 0 8px}
.parent-section label{display:block;font-weight:700;margin-bottom:7px}
.parent-section input:not([type=checkbox]),.parent-section select{width:100%;border:2px solid var(--line);padding:12px;border-radius:13px;margin-bottom:16px;font:inherit;background:#fff;color:var(--ink)}
.parent-section .switch-row{margin-bottom:12px}
.parent-section .stats-grid{grid-template-columns:repeat(3,1fr);margin-top:14px}
.week-bars.two-weeks{gap:4px}.bar.today span{background:var(--orange)}
.day-row{padding:12px 0;border-top:1px solid var(--line)}.day-row:first-child{border-top:0}
.day-row h4{margin:0;font-size:14px}.day-row h4 small{color:var(--muted);font-weight:600;margin-left:8px}
.grapheme{font:700 17px Georgia,serif;color:var(--teal)}
.hard-list{display:grid;gap:8px}
.hard-row{display:flex;align-items:center;gap:10px}.hard-row .muted{flex:1}
.stage-admin{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:14px}
.stage-admin-card{border:2px solid var(--line);border-radius:18px;padding:14px 16px}
.stage-admin-card.current{border-color:var(--orange-soft);background:#fffaf2}
.stage-admin-head{display:flex;gap:10px;align-items:flex-start}.stage-admin-head h3{margin:3px 0 2px;font-size:15px}
.stage-admin-head em{font-style:normal;font-size:11px;background:var(--orange);color:#fff;border-radius:99px;padding:2px 8px;margin-left:4px;vertical-align:2px}
.stage-admin-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px;align-items:center}
.toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom));transform:translateX(-50%);background:var(--ink);color:#fff;padding:12px 18px;border-radius:14px;font-weight:700;box-shadow:var(--shadow);max-width:calc(100% - 32px);z-index:10}
@media (max-width:600px){.parent-section{padding:18px 16px}.stage-admin{grid-template-columns:1fr}.parent-section .stats-grid{grid-template-columns:repeat(2,1fr)}}
.choice-row.words .choice-button{min-width:120px;height:84px;padding:0 20px;font:700 34px Georgia,serif;color:var(--ink)}
@media (max-width:600px){.choice-row.words .choice-button{min-width:92px;height:70px;font-size:28px}}
.choice-row.intro .choice-button{width:150px;padding:12px 8px;display:grid;gap:4px;justify-items:center}
.choice-row.intro .intro-emoji{font-size:40px;line-height:1.1}
.choice-row.intro .hint{font-size:26px;margin:0}
.choice-row.intro small{color:var(--muted);font-size:13px;font-weight:600}
.intro-rule{max-width:560px;margin:16px auto 0;line-height:1.6;text-align:center}
@media (max-width:600px){.choice-row.intro .choice-button{width:30%;min-width:96px}.choice-row.intro .hint{font-size:22px}}
/* iPad 橫屏：練習頁一屏放得下，左邊單詞卡，右邊操作區 */
@media (orientation:landscape) and (min-width:900px){
body.in-lesson .app-shell{max-width:1180px;height:100dvh;display:flex;flex-direction:column;padding-bottom:14px}
body.in-lesson .topbar{height:58px}
body.in-lesson #lessonView{flex:1;min-height:0;display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto minmax(0,1fr);column-gap:20px;align-items:center}
body.in-lesson #lessonView .back-button{margin:0}
body.in-lesson #lessonView .lesson-header{margin:0 0 10px;align-items:center}
body.in-lesson #lessonView .lesson-header .eyebrow{margin-bottom:2px}
body.in-lesson #lessonView .lesson-header h1{font-size:22px;margin:0}
body.in-lesson #modeTabs{grid-column:1/-1;grid-row:2;margin-bottom:10px}
body.in-lesson .gentle-tip{display:none}
body.in-lesson .activity-card{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);grid-template-rows:auto 1fr auto;column-gap:28px;row-gap:12px;padding:18px 26px 20px;grid-column:1/-1;grid-row:3;align-self:stretch;min-height:0;overflow:auto}
body.in-lesson .activity-label{grid-column:1/-1;margin:0}
body.in-lesson #wordCard{grid-column:1;grid-row:2/4;align-self:stretch;display:flex;flex-direction:column;justify-content:center}
body.in-lesson #activityArea{grid-column:2;grid-row:2;align-self:center;min-height:0;padding:0}
body.in-lesson .lesson-controls{grid-column:2;grid-row:3;margin-top:0}
body.in-lesson .build-instruction,body.in-lesson .write-instruction{margin-bottom:12px}
body.in-lesson .choice-row.intro .choice-button{width:30%;min-width:0}
}
/* 單詞階梯：選中的字塊高亮，下面彈出候選 */
.ladder-wrap{position:relative;display:inline-block;padding-bottom:92px}
.ladder-row{margin-bottom:0}
.ladder-row .chunk-slot{transition:transform .15s,background .15s}
.ladder-row .chunk-slot.selected{background:var(--orange);color:#fff;border-color:var(--orange);border-radius:14px;transform:translateY(-3px);box-shadow:0 6px 14px color-mix(in srgb,var(--orange) 33%,transparent)}
.ladder-pop{position:absolute;top:66px;transform:translateX(calc(-50% + var(--shift,0px)));display:flex;gap:8px;padding:10px;background:#fff;border:2px solid var(--orange-soft);border-radius:18px;box-shadow:var(--shadow);z-index:5;white-space:nowrap}
.ladder-pop::before{content:"";position:absolute;top:-9px;left:calc(50% - var(--shift,0px));width:14px;height:14px;background:#fff;border-left:2px solid var(--orange-soft);border-top:2px solid var(--orange-soft);transform:translateX(-50%) rotate(45deg)}
.ladder-pop .letter-button{position:relative}
.ladder-pop .letter-button:disabled{opacity:.3;text-decoration:line-through}
/* 主題：只換暖色系的幾個顏色變量（家長頁可選） */
:root[data-theme="pink"]{--peach:#ffd9e6;--orange:#d94a7c;--orange-soft:#f59bbb;--butter:#ffe9f1;--brown:#a3375f;--bg-warm:#fff3f7}
:root[data-theme="lavender"]{--peach:#e7defc;--orange:#7b5ad6;--orange-soft:#b9a4f2;--butter:#f1ecfd;--brown:#5a40ad;--bg-warm:#f7f3ff}
:root[data-theme="mint"]{--peach:#cfeee3;--orange:#23876a;--orange-soft:#7fcdb2;--butter:#e4f6ef;--brown:#1d6b55;--bg-warm:#f1faf6}
/* 讀故事 */
.word-card.story-card .word{font:500 clamp(20px,2.6vw,27px)/1.7 Georgia,serif;text-align:left;letter-spacing:0;margin:4px 0}
.story-title{display:block;font:800 15px -apple-system,BlinkMacSystemFont,"PingFang TC",sans-serif;color:var(--orange);margin-bottom:6px;letter-spacing:.5px}
.story-line{display:block;width:fit-content;border-radius:6px;margin:2px 0;transition:background .2s,box-shadow .2s}
.story-line.active{background:var(--butter);box-shadow:0 0 0 4px var(--butter)}
.word-card.story-card .meaning{text-align:left;line-height:1.7;font-size:15px}
/* 孩子的 App：不能長按選字、不跳出系統選單，點按沒有灰色閃爍，雙擊不放大；輸入框照常可以打字 */
body.child-app{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
body.child-app input,body.child-app textarea{-webkit-user-select:text;user-select:text}
html:has(body.child-app),body.child-app{overscroll-behavior:none}
@media (orientation:landscape) and (min-width:900px){
html:has(body.in-lesson),body.in-lesson{overflow:hidden;height:100dvh}
body.in-lesson .activity-card{overscroll-behavior:contain}
}
.child-row{margin-top:10px}
.child-row select{width:100%;border:2px solid var(--line);padding:12px;border-radius:13px;font:inherit;background:#fff;color:var(--ink)}
/* 家長頁：孩子分頁 */
.child-tabs{display:flex;flex-wrap:wrap;gap:8px}
.child-tab{border:2px solid var(--line);background:#fff;color:var(--ink);border-radius:99px;padding:8px 16px;font-weight:800;cursor:pointer}
.child-tab.active{border-color:var(--orange);background:var(--butter);color:var(--brown)}
.child-tab.add{border-style:dashed;color:var(--muted)}
.child-bar .login-row{margin-top:12px}
.text-button{border:0;background:none;color:var(--teal);font-weight:700;cursor:pointer;padding:8px 0}
.sync-pill{border:0;cursor:pointer;font-family:inherit}
/* 家長頁：邀請朋友 */
.invite-code-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:12px 0}
.invite-code{font:800 30px/1 ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:4px;padding:12px 18px;border-radius:16px;background:var(--butter);color:var(--brown)}
#redeemForm{margin-top:12px}
