:root{--bg:#f7f7fb;--surface:#fff;--ink:#242338;--muted:#77758b;--line:#e9e8f1;--primary:#6558d9;--primary-dark:#4e43be;--soft:#efedff;--green:#2ba879;--orange:#f09a42;--red:#dc5d6c;--shadow:0 16px 48px rgba(45,40,92,.09);font-family:Inter,"PingFang SC","Microsoft YaHei",system-ui,sans-serif;color:var(--ink);background:var(--bg)}
*{box-sizing:border-box}
html{scroll-behavior:smooth;overflow-x:hidden;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);min-height:100vh;min-height:100dvh;overflow-x:hidden}
button,input,select{font:inherit}
button{color:inherit;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid rgba(101,88,217,.25);outline-offset:2px}
.boot-screen{min-height:100vh;display:grid;place-content:center;text-align:center;color:var(--muted)}
.brand-mark{display:grid;place-items:center;width:45px;height:45px;border-radius:15px;background:linear-gradient(145deg,#7568ed,#5549c5);color:#fff;font-family:Tahoma,sans-serif;font-size:27px;font-weight:800;box-shadow:0 10px 24px rgba(101,88,217,.25)}
.brand-mark.large{width:66px;height:66px;border-radius:21px;font-size:39px;margin-bottom:20px}
.layout{min-height:100vh}
.sidebar{position:fixed;inset:0 auto 0 0;width:230px;padding:28px 18px 22px;background:#fff;border-right:1px solid var(--line);display:flex;flex-direction:column;z-index:20}
.brand{border:0;background:none;display:flex;align-items:center;gap:12px;text-align:left;padding:0 7px 34px;cursor:pointer}
.brand strong,.brand small{display:block}
.brand strong{font-size:17px}
.brand small{margin-top:4px;color:var(--muted);font-size:12px}
.sidebar nav{display:grid;gap:7px}
.nav-item{min-height:50px;padding:0 14px;border:0;border-radius:14px;background:transparent;display:flex;align-items:center;gap:13px;color:var(--muted);cursor:pointer;text-align:left}
.nav-item b{width:24px;text-align:center;font-size:21px}
.nav-item span{flex:1}
.nav-item em{min-width:22px;height:22px;padding:0 6px;border-radius:20px;background:var(--red);color:#fff;font-size:11px;font-style:normal;display:grid;place-items:center}
.nav-item:hover,.nav-item.active{background:var(--soft);color:var(--primary);font-weight:700}
.profile-chip{margin-top:auto;padding:12px 7px;border:0;border-top:1px solid var(--line);background:none;display:flex;align-items:center;gap:10px;text-align:left;cursor:pointer}
.profile-chip>span{width:36px;height:36px;border-radius:50%;background:#ffddbe;display:grid;place-items:center;font-weight:800}
.profile-chip strong,.profile-chip small{display:block}
.profile-chip small{color:var(--muted);margin-top:2px}
.page-shell{margin-left:230px}
.page{width:min(1120px,100%);min-height:100vh;margin:auto;padding:42px 42px 90px}
.bottom-nav{display:none}
.page-head{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:28px}
.page-head h1{margin:5px 0 0;font-size:clamp(27px,3vw,38px);letter-spacing:-.03em}
.eyebrow{text-transform:none;color:var(--primary);font-size:12px;font-weight:800;letter-spacing:.08em}
.primary,.secondary,.danger,.text-button,.icon-button,.circle-button{border:0;cursor:pointer}
.primary{min-height:47px;padding:0 22px;border-radius:14px;background:var(--primary);color:#fff;font-weight:800;box-shadow:0 8px 20px rgba(101,88,217,.2)}
.primary:hover{background:var(--primary-dark)}
.primary.wide{width:100%}
.secondary{min-height:46px;padding:0 20px;border-radius:14px;background:#fff;border:1px solid var(--line);font-weight:700}
.danger{min-height:44px;padding:0 16px;border-radius:12px;background:#fff0f2;color:#b63a4b;font-weight:700}
.text-button{background:none;color:var(--primary);font-weight:700;padding:8px}
.icon-button{width:44px;height:44px;border-radius:13px;background:#fff;border:1px solid var(--line);display:grid;place-items:center;font-size:20px}
.icon-button.selected{color:#e5a923;background:#fff9dc}
.hero-card{border-radius:28px;padding:34px;background:linear-gradient(135deg,#6759da 0%,#5547c0 58%,#463aa9 100%);color:#fff;display:flex;justify-content:space-between;gap:30px;box-shadow:0 20px 50px rgba(77,65,182,.22);overflow:hidden;position:relative}
.hero-card:after{content:"สวัสดี";position:absolute;right:-20px;bottom:-35px;font:800 86px Tahoma;color:rgba(255,255,255,.055);white-space:nowrap}
.hero-copy{position:relative;z-index:1;max-width:640px}
.pill{display:inline-flex;padding:7px 11px;border-radius:99px;background:rgba(255,255,255,.15);font-size:12px;font-weight:700}
.hero-copy h2{font-size:clamp(25px,4vw,38px);margin:17px 0 8px}
.hero-copy p{margin:0 0 24px;color:rgba(255,255,255,.8);line-height:1.7}
.hero-copy .primary{background:#fff;color:var(--primary)}
.hero-ring{--value:0;flex:0 0 130px;width:130px;height:130px;border-radius:50%;background:conic-gradient(#ffd06f calc(var(--value)*1%),rgba(255,255,255,.15) 0);display:grid;place-content:center;text-align:center;position:relative;z-index:1;align-self:center}
.hero-ring:before{content:"";position:absolute;inset:9px;border-radius:50%;background:#5548c3}
.hero-ring strong,.hero-ring small{position:relative}
.hero-ring strong{font-size:25px}
.hero-ring small{font-size:11px;color:rgba(255,255,255,.7)}
.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:20px 0 38px}
.metric-grid article{background:#fff;border:1px solid var(--line);border-radius:18px;padding:18px;display:flex;align-items:center;gap:13px}
.metric-grid article>span{font-size:24px}
.metric-grid strong,.metric-grid small{display:block}
.metric-grid strong{font-size:25px}
.metric-grid small{color:var(--muted);margin-top:2px;font-size:12px}
.section-title{display:flex;align-items:end;justify-content:space-between;gap:20px;margin:24px 0 16px}
.section-title h2{margin:5px 0 0;font-size:23px}
.scene-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.scene-card{position:relative;background:#fff;border:1px solid var(--line);border-radius:21px;padding:21px;box-shadow:0 8px 30px rgba(43,39,77,.04)}
.scene-card:hover{transform:translateY(-2px);box-shadow:var(--shadow)}
.scene-icon{width:48px;height:48px;border-radius:16px;background:#f0edff;display:grid;place-items:center;font-size:24px}
.scene-card.orange .scene-icon,.scene-icon.orange{background:#fff1df}
.scene-card.blue .scene-icon,.scene-icon.blue{background:#e8f6ff}
.scene-card.teal .scene-icon,.scene-icon.teal{background:#e4f7f3}
.scene-card.rose .scene-icon,.scene-icon.rose{background:#fff0f4}
.scene-card.red .scene-icon,.scene-icon.red{background:#ffebed}
.scene-copy{margin-top:20px}
.scene-copy>span{font-size:11px;color:var(--muted)}
.scene-copy h3{font-size:20px;margin:6px 0}
.scene-copy p{color:var(--muted);font-size:13px;min-height:38px}
.scene-copy>small{display:block;margin-top:7px;color:var(--muted)}
.circle-button{position:absolute;right:18px;top:20px;width:39px;height:39px;border-radius:50%;background:#f5f4fa;color:var(--primary);font-size:19px}
.progress{height:7px;background:#ecebf2;border-radius:20px;overflow:hidden}
.progress i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#7a6fea,var(--primary))}
.course-scene{margin-bottom:24px;padding:25px;background:#fff;border:1px solid var(--line);border-radius:23px}
.course-overview{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:30px}
.course-overview>div{background:#fff;border:1px solid var(--line);border-radius:17px;padding:18px;text-align:center}
.course-overview strong,.course-overview span{display:block}
.course-overview strong{font-size:28px;color:var(--primary)}
.course-overview span{font-size:12px;color:var(--muted);margin-top:4px}
.level-section{margin:34px 0 46px}
.level-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin:0 2px 18px}
.level-heading>div{max-width:760px}
.level-heading h2{font-size:27px;margin:7px 0 6px}
.level-heading p{margin:0;color:var(--muted);line-height:1.6}
.level-heading>strong{font-size:24px;color:var(--primary)}
.level-badge{display:inline-grid;place-items:center;min-width:38px;height:26px;padding:0 8px;margin-right:8px;border-radius:8px;background:var(--primary);color:#fff;font-size:12px;font-weight:800}
.scene-heading{display:flex;align-items:center;gap:15px}
.scene-heading>div:nth-child(2){flex:1}
.scene-heading h2{margin:4px 0;font-size:23px}
.scene-heading p{margin:0;color:var(--muted)}
.scene-heading>strong{color:var(--primary)}
.course-scene>.progress{margin:18px 0}
.lesson-list{display:grid}
.lesson-row{border:0;border-top:1px solid var(--line);min-height:74px;background:none;display:flex;align-items:center;gap:14px;text-align:left;cursor:pointer}
.lesson-row:hover{background:#faf9ff}
.lesson-number{width:34px;height:34px;border-radius:11px;background:#f1f0f5;display:grid;place-items:center;font-weight:800}
.lesson-row.done .lesson-number{background:#e1f8ef;color:var(--green)}
.lesson-row.current .lesson-number{background:var(--soft);color:var(--primary)}
.lesson-row>div{flex:1}
.lesson-row strong,.lesson-row small{display:block}
.lesson-row small{color:var(--muted);margin-top:5px}
.lesson-row>span:last-child{font-size:13px;color:var(--primary);font-weight:700}
.lesson-top{display:grid;grid-template-columns:44px 1fr auto;align-items:center;gap:18px;max-width:760px;margin:auto}
.lesson-top>div small{display:block;text-align:center;color:var(--muted);font-size:11px;margin-top:6px}
.lesson-top>span{color:var(--muted);font-size:13px}
.lesson-stage{max-width:760px;margin:28px auto}
.story-card,.learn-card,.quiz-card,.task-card,.complete-card{background:#fff;border:1px solid var(--line);border-radius:28px;padding:clamp(24px,5vw,46px);box-shadow:var(--shadow)}
.story-visual{height:190px;border-radius:22px;background:linear-gradient(135deg,#efeaff,#f7e9de);display:grid;place-content:center;text-align:center;margin-bottom:30px}
.story-visual span{font-size:70px}
.story-visual i{font-size:11px;font-style:normal;background:#fff;padding:5px 9px;border-radius:20px;margin-top:8px}
.story-card h1,.quiz-card h1,.task-card h1,.complete-card h1{font-size:clamp(27px,5vw,40px);margin:10px 0 12px}
.story-card>p,.task-card>p,.complete-card>p{color:var(--muted);line-height:1.75}
.goal-box{display:grid;gap:5px;background:#f6f5fd;padding:17px;border-radius:15px;margin:24px 0}
.goal-box span{color:var(--muted)}
.step-count{text-align:center;color:var(--muted);font-size:12px}
.learn-card{text-align:center}
.learn-card h1{font-size:27px;margin:24px 0 18px}
.writing-guide,.modal-writing{height:132px;border-radius:17px;display:flex;align-items:center;justify-content:center;padding:10px;overflow:hidden;background-color:#fffdf9;background-image:linear-gradient(#aeb7c5 1.5px,transparent 1.5px),linear-gradient(90deg,transparent 0);background-size:100% 33.333%;border:1px solid #d7dce5}
.writing-guide{background-image:linear-gradient(#aeb7c5 1px,transparent 1px),linear-gradient(transparent 49%,#c4cad3 50%,transparent 51%);background-size:100% 33.333%,100% 100%}
.thai-main,.thai-plain,.thai-colored{font:700 clamp(28px,7vw,50px) Tahoma,"Noto Sans Thai",sans-serif;white-space:nowrap;transform:scaleX(.92);transform-origin:center}
.thai-main.thai-medium,.thai-plain.thai-medium,.thai-colored.thai-medium{font-size:clamp(26px,5.5vw,43px)}
.thai-main.thai-long,.thai-plain.thai-long,.thai-colored.thai-long{font-size:clamp(21px,4.3vw,34px)}
.thai-main.thai-xlong,.thai-plain.thai-xlong,.thai-colored.thai-xlong{font-size:clamp(17px,3.5vw,28px)}
.thai-consonant{color:#3d59c8}
.thai-vowel{color:#e04e76}
.thai-tone{color:#e29126}
.thai-mark{color:#6d5b9c}
.roman{font-size:20px;font-weight:700;margin:22px 0 7px;color:#3e3979}
.numeric,.homophone{margin:6px 0;color:var(--muted)}
.audio-actions{display:flex;justify-content:center;gap:9px;margin:23px 0}
.audio-button{min-height:44px;padding:0 16px;border:1px solid var(--line);background:#fff;border-radius:13px;font-weight:700;cursor:pointer}
.record-panel{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:22px 0}
.record-button{border:0;background:none;display:flex;align-items:center;gap:11px;margin:auto;cursor:pointer}
.record-button:disabled{cursor:wait;opacity:.68}
.record-button i{width:44px;height:44px;border-radius:50%;background:var(--red);border:9px solid #ffe8ec}
.record-button.recording i{animation:pulse 1s infinite}
.record-button.recording i{border-radius:14px;background:#b83d50}
.record-panel>small{display:block;color:var(--muted);margin-top:7px}
.record-panel audio{height:38px;margin-top:12px;max-width:100%}
.record-result{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:9px;margin-top:14px;padding:10px;border-radius:13px;background:#f7f6fd}
.record-result>span{font-size:12px;font-weight:800;color:var(--primary)}
.record-result audio{margin-top:0}
.self-rate button:disabled{opacity:.5;cursor:not-allowed}
.self-rate{margin-top:22px}
.self-rate>span{display:block;color:var(--muted);font-size:13px;margin-bottom:11px}
.self-rate>div{display:flex;gap:8px;justify-content:center}
.self-rate button{border:1px solid var(--line);background:#f9f9fb;border-radius:12px;min-height:42px;padding:0 14px;cursor:pointer}
.listen-orb{width:118px;height:118px;border:0;border-radius:50%;background:linear-gradient(145deg,#7468e7,#5044b8);color:#fff;font-size:37px;display:grid;place-content:center;margin:27px auto;box-shadow:0 16px 35px rgba(82,69,188,.28);cursor:pointer}
.listen-orb small{display:block;font-size:11px;margin-top:5px}
.quiz-card{text-align:center}
.quiz-options{display:grid;gap:10px;text-align:left}
.quiz-options button{min-height:58px;border:1px solid var(--line);background:#fff;border-radius:15px;padding:8px 14px;display:flex;align-items:center;gap:12px;cursor:pointer}
.quiz-options button:hover{border-color:var(--primary);background:#faf9ff}
.quiz-options button.wrong{border-color:#e7a2ab;background:#fff1f3;color:#a83e4b;opacity:1}
.quiz-options button.wrong b{background:#f7cbd1;color:#9f3140}
.quiz-options button:disabled:not(.wrong){cursor:default;opacity:.62}
.quiz-options b{width:31px;height:31px;border-radius:9px;background:#f0eff5;display:grid;place-items:center}
.feedback{padding:17px;border-radius:15px;margin-top:15px;display:grid;grid-template-columns:1fr auto;gap:4px;text-align:left}
.feedback.ok{background:#eaf9f3;color:#167b59}
.feedback.bad{background:#fff0f2;color:#a83e4b}
.feedback.retry .secondary{grid-row:1/3;grid-column:2;background:#fff;color:#a83e4b;border-color:#efc4ca}
.feedback span{font-size:13px}
.feedback .primary{grid-row:1/3;grid-column:2}
.task-card{text-align:center}
.task-icon,.badge-burst{font-size:60px}
.task-phrases{display:grid;gap:8px;margin:25px 0;text-align:left}
.task-phrases button{border:1px solid var(--line);background:#fafafd;border-radius:13px;min-height:48px;padding:0 14px;display:flex;justify-content:space-between;align-items:center;cursor:pointer}
.task-actions,.complete-actions{display:flex;justify-content:center;gap:10px}
.complete-card{text-align:center}
.result-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:27px 0}
.result-grid>div{padding:20px 8px;background:#f7f6fd;border-radius:16px}
.result-grid strong,.result-grid span{display:block}
.result-grid strong{font-size:28px;color:var(--primary)}
.result-grid span{font-size:12px;color:var(--muted);margin-top:4px}
.tab-list,.category-nav{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:22px}
.library-groups{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:18px}
.library-groups button{position:relative;min-height:112px;padding:16px;text-align:left;border:1px solid var(--line);border-radius:17px;background:#fff;cursor:pointer}
.library-groups button:hover,.library-groups button.active{border-color:var(--primary);background:#f7f5ff}
.library-groups strong,.library-groups span{display:block}
.library-groups strong{font-size:16px}
.library-groups span{margin-top:7px;padding-right:28px;color:var(--muted);font-size:11px;line-height:1.5}
.library-groups b{position:absolute;right:12px;top:14px;color:var(--primary);font-size:11px}
.tab-list button,.category-nav button{min-height:41px;padding:0 14px;border:1px solid var(--line);border-radius:12px;background:#fff;cursor:pointer}
.tab-list button.active,.category-nav button.active{background:var(--primary);color:#fff;border-color:var(--primary)}
.review-list{display:grid;gap:10px}
.review-row{background:#fff;border:1px solid var(--line);border-radius:17px;padding:14px 16px;display:flex;align-items:center;gap:12px}
.review-main{border:0;background:none;flex:1;text-align:left;cursor:pointer}
.review-main h3{margin:6px 0}
.review-main>b{font:700 21px Tahoma}
.review-main small{color:var(--muted);margin-left:8px}
.status{display:inline-flex;padding:4px 7px;border-radius:7px;background:#f0eff4;color:var(--muted);font-size:10px}
.status.learning{background:#fff1db;color:#a96719}
.status.basic{background:#e8f1ff;color:#3469a8}
.status.mastered{background:#e2f8ef;color:#16805d}
.review-row>div{display:flex;gap:7px}
.review-bad,.review-good{min-height:42px;border:0;border-radius:11px;padding:0 12px;cursor:pointer}
.review-bad{background:#fff0f2;color:#a83e4b}
.review-good{background:#e8f8f1;color:#157858}
.empty{text-align:center;background:#fff;border:1px dashed #d8d5e7;border-radius:22px;padding:55px 20px}
.empty>span{font-size:48px}
.empty h2{margin-bottom:5px}
.empty p{color:var(--muted);margin:0 0 20px}
.search{width:min(340px,48vw);height:45px;border:1px solid var(--line);background:#fff;border-radius:13px;padding:0 13px;display:flex;align-items:center;gap:8px}
.search input{border:0;outline:0;width:100%;background:transparent}
.result-count,.load-note{color:var(--muted);font-size:13px}
.phrase-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.phrase-card{background:#fff;border:1px solid var(--line);border-radius:17px;padding:14px;display:flex;gap:8px}
.phrase-open{border:0;background:none;flex:1;text-align:left;min-width:0;cursor:pointer}
.phrase-open h3{font-size:15px;margin:7px 0}
.phrase-open b{font:700 20px Tahoma;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.phrase-open small{display:block;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:4px}
.phrase-card>div{display:grid;align-content:center;gap:5px}
.phrase-card>div button{border:0;background:#f5f4f8;width:34px;height:34px;border-radius:9px;cursor:pointer}
.phrase-card>div .selected{color:#dc9f18}
.modal-backdrop{position:fixed;inset:0;background:rgba(27,25,42,.58);display:grid;place-items:center;padding:18px;z-index:100}
.phrase-modal{width:min(620px,100%);max-height:92vh;overflow:auto;background:#fff;border-radius:26px;padding:clamp(24px,5vw,40px);position:relative;text-align:center}
.modal-close{position:absolute;right:16px;top:16px;width:42px;height:42px;border:0;border-radius:50%;background:#f3f2f6;font-size:25px;cursor:pointer}
.phrase-modal h2{font-size:27px;margin:12px 0 20px}
.modal-writing{height:160px}
.legend{display:flex;justify-content:center;gap:15px;color:var(--muted);font-size:11px;margin:18px 0}
.legend span{display:flex;align-items:center;gap:5px}
.legend i{width:8px;height:8px;border-radius:50%}
.legend .c{background:#3d59c8}
.legend .v{background:#e04e76}
.legend .t{background:#e29126}
.modal-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}
.report-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.report-summary article,.report-card,.settings-card{background:#fff;border:1px solid var(--line);border-radius:20px;padding:22px}
.report-summary article>span,.report-summary article>small{display:block;color:var(--muted)}
.report-summary strong{display:block;font-size:34px;margin:9px 0}
.report-summary strong small{display:inline;font-size:15px;color:var(--muted)}
.report-summary .progress{margin:12px 0}
.report-card{margin-top:18px}
.week-chart{height:180px;display:flex;gap:12px;align-items:end;padding-top:25px}
.week-chart>div{height:100%;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:end;gap:8px}
.week-chart i{width:min(34px,80%);min-height:8px;border-radius:8px 8px 3px 3px;background:linear-gradient(#8176e8,#5c50cc);position:relative}
.week-chart i b{position:absolute;top:-19px;width:100%;text-align:center;font-size:10px;font-style:normal}
.week-chart span{font-size:10px;color:var(--muted)}
.report-columns{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.scene-progress{display:grid;grid-template-columns:1fr auto;gap:9px;margin:19px 0}
.scene-progress .progress{grid-column:1/3}
.timeline>div{display:flex;gap:12px;margin:17px 0}
.timeline i{width:9px;height:9px;border-radius:50%;background:var(--primary);margin-top:5px}
.timeline strong,.timeline small{display:block}
.timeline small{color:var(--muted);margin-top:4px}
.settings-card{max-width:720px;margin-bottom:18px}
.settings-card form{display:grid;gap:17px}
.settings-card label{display:grid;gap:7px;font-weight:700}
.settings-card input,.settings-card select{height:47px;border:1px solid var(--line);border-radius:12px;padding:0 13px;background:#fff}
.settings-card p{color:var(--muted);line-height:1.7}
.settings-actions{display:flex;gap:10px}
.onboarding{min-height:100vh;padding:28px;display:grid;place-items:center;background:radial-gradient(circle at top left,#e9e5ff,transparent 35%),radial-gradient(circle at bottom right,#ffe9db,transparent 35%),#f9f8fc}
.onboarding-card{width:min(510px,100%);background:#fff;padding:clamp(28px,6vw,52px);border-radius:30px;box-shadow:var(--shadow)}
.onboarding-card h1{font-size:clamp(29px,6vw,43px);line-height:1.18;margin:10px 0 16px}
.onboarding-card>p{color:var(--muted);line-height:1.7}
.onboarding form{display:grid;gap:15px;margin-top:27px}
.onboarding label{font-weight:700;display:grid;gap:7px}
.onboarding input,.onboarding select{height:49px;border:1px solid var(--line);border-radius:13px;padding:0 13px;background:#fff}
.onboarding .text-button{display:block;margin:10px auto 0}
.toast{position:fixed;left:50%;bottom:max(28px,env(safe-area-inset-bottom));max-width:calc(100vw - 28px);transform:translate(-50%,20px);background:#282638;color:#fff;padding:11px 17px;border-radius:12px;opacity:0;pointer-events:none;transition:.2s;z-index:200;text-align:center}
.toast.show{opacity:1;transform:translate(-50%,0)}
@keyframes pulse{50%{transform:scale(1.12);box-shadow:0 0 0 8px rgba(220,93,108,.12)}
}

@media(max-width:900px){.sidebar{width:190px}
.page-shell{margin-left:190px}
.page{padding:32px 25px 90px}
.metric-grid{grid-template-columns:repeat(2,1fr)}
.scene-grid,.phrase-grid{grid-template-columns:repeat(2,1fr)}
.report-summary{grid-template-columns:1fr}
.report-columns{grid-template-columns:1fr}
}

@media(max-width:680px){.sidebar{display:none}
.page-shell{margin-left:0}
.page{padding:max(20px,env(safe-area-inset-top)) clamp(12px,4vw,18px) calc(82px + env(safe-area-inset-bottom))}
.bottom-nav{position:fixed;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));z-index:30;left:0;right:0;bottom:0;min-height:calc(66px + env(safe-area-inset-bottom));padding:5px 4px max(5px,env(safe-area-inset-bottom));background:rgba(255,255,255,.95);border-top:1px solid var(--line);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.bottom-nav button{min-width:0;min-height:52px;border:0;background:none;color:var(--muted);display:grid;place-content:center;gap:2px;border-radius:12px}
.bottom-nav button b{font-size:19px}
.bottom-nav button span{font-size:10px}
.bottom-nav button.active{color:var(--primary)}
.page-head{align-items:flex-start;margin-bottom:20px}
.page-head h1{font-size:clamp(25px,8vw,32px)}
.hero-card{padding:23px 20px;display:block;border-radius:22px}
.hero-copy h2{font-size:clamp(24px,7.5vw,32px)}
.hero-copy p{font-size:14px;line-height:1.65}
.hero-copy .primary{width:100%}
.hero-ring{display:none}
.metric-grid{gap:8px;margin:12px 0 30px}
.metric-grid article{min-width:0;padding:13px 9px;border-radius:15px}
.metric-grid article>span{font-size:18px}
.metric-grid strong{font-size:21px}
.metric-grid small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.scene-grid,.phrase-grid{grid-template-columns:1fr}
.scene-card{padding:18px;border-radius:18px}
.scene-copy{margin-top:15px}
.scene-copy p{min-height:0}
.section-title{align-items:center}
.section-title h2{font-size:20px}
.course-scene{padding:18px 14px}
.course-overview{grid-template-columns:repeat(2,1fr);gap:8px;margin-bottom:26px}
.library-groups{grid-template-columns:repeat(2,1fr)}
.library-groups button{min-height:104px;padding:13px}
.course-overview>div{padding:13px 8px}
.course-overview strong{font-size:23px}
.level-section{margin:29px 0 38px}
.level-heading{gap:10px}
.level-heading h2{font-size:23px}
.level-heading>strong{font-size:18px}
.scene-heading{align-items:flex-start}
.scene-heading>div:nth-child(2){min-width:0}
.scene-heading h2{font-size:20px}
.scene-heading p{font-size:13px;line-height:1.5}
.scene-heading>strong{display:none}
.lesson-row{min-height:72px;gap:10px;padding:7px 0}
.lesson-row>div{min-width:0}
.lesson-row strong{font-size:14px}
.lesson-row small{font-size:11px;line-height:1.4}
.lesson-number{flex:0 0 34px}
.lesson-row>span:last-child{flex:0 0 auto;font-size:11px;white-space:nowrap}
.layout:has(.lesson-stage) .bottom-nav{display:none}
.layout:has(.lesson-stage) .page{padding:max(10px,env(safe-area-inset-top)) 10px calc(22px + env(safe-area-inset-bottom))}
.lesson-top{position:sticky;top:0;z-index:15;grid-template-columns:44px minmax(0,1fr);gap:11px;padding:7px 2px 10px;background:rgba(247,247,251,.95);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.lesson-top>span{display:none}
.lesson-stage{margin:10px auto 0}
.story-card,.learn-card,.quiz-card,.task-card,.complete-card{padding:24px 17px;border-radius:21px;box-shadow:0 8px 28px rgba(45,40,92,.07)}
.story-visual{height:150px}
.story-card h1,.quiz-card h1,.task-card h1,.complete-card h1{font-size:clamp(25px,7.5vw,32px)}
.learn-card h1{font-size:23px;margin:18px 0 15px}
.writing-guide{height:112px;padding:6px}
.thai-main.thai-short,.thai-plain.thai-short,.thai-colored.thai-short{font-size:clamp(28px,10vw,42px)}
.thai-main.thai-medium,.thai-plain.thai-medium,.thai-colored.thai-medium{font-size:clamp(22px,7vw,32px)}
.thai-main.thai-long,.thai-plain.thai-long,.thai-colored.thai-long{font-size:clamp(17px,5.3vw,24px)}
.thai-main.thai-xlong,.thai-plain.thai-xlong,.thai-colored.thai-xlong{font-size:clamp(13px,4vw,18px)}
.roman{font-size:17px;overflow-wrap:anywhere}
.numeric,.homophone{font-size:13px;line-height:1.5;overflow-wrap:anywhere}
.audio-actions{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) 44px;gap:7px;margin:18px 0}
.audio-button{min-width:0;padding:0 9px;font-size:13px}
.record-panel{padding:19px 0}
.record-result{display:grid;grid-template-columns:1fr;padding:12px}
.record-result audio{width:100%;max-width:100%}
.self-rate>div{display:grid;grid-template-columns:repeat(3,1fr)}
.self-rate button{min-width:0;min-height:46px;padding:5px 6px;font-size:12px;line-height:1.25}
.listen-orb{width:102px;height:102px;margin:22px auto}
.quiz-options button{min-height:60px;padding:9px 11px}
.feedback{grid-template-columns:1fr}
.feedback .primary{grid-row:auto;grid-column:auto}
.feedback.retry .secondary{grid-row:auto;grid-column:auto;margin-top:6px}
.feedback .primary,.feedback.retry .secondary{width:100%;margin-top:8px}
.task-phrases button{min-height:52px}
.task-actions,.complete-actions{display:grid;grid-template-columns:1fr 1fr}
.task-actions button,.complete-actions button{min-width:0;padding:7px 10px;line-height:1.3}
.result-grid{gap:6px}
.result-grid>div{padding:16px 5px}
.result-grid strong{font-size:24px}
.review-row{align-items:flex-start;display:block}
.review-row>div{display:grid;grid-template-columns:44px 1fr 1fr;margin-top:11px}
.review-row>div button{min-width:0;min-height:44px;padding-left:7px;padding-right:7px}
.review-main small{display:block;margin:5px 0}
.search{width:100%;margin-top:8px}
.search input,.settings-card input,.settings-card select,.onboarding input,.onboarding select{font-size:16px}
.page-head:has(.search){display:block}
.phrase-card{padding:13px}
.phrase-card>div button{width:44px;height:44px}
.report-columns{display:block}
.report-card{margin-top:12px}
.week-chart{gap:6px}
.modal-backdrop{align-items:end;padding:0}
.phrase-modal{width:100%;max-height:92dvh;padding:30px 16px calc(20px + env(safe-area-inset-bottom));border-radius:24px 24px 0 0}
.phrase-modal h2{font-size:24px;padding:0 35px;margin-top:10px}
.modal-writing{height:122px;padding:6px}
.modal-actions{display:grid;grid-template-columns:1fr 1fr}
.modal-actions .audio-button{min-height:46px}
.modal-actions .icon-button{width:100%}
.legend{flex-wrap:wrap}
.settings-actions{display:grid}
.onboarding{min-height:100dvh;padding:max(14px,env(safe-area-inset-top)) 14px max(14px,env(safe-area-inset-bottom))}
.onboarding-card{padding:27px 20px;border-radius:23px}
.onboarding-card h1{font-size:clamp(29px,9vw,38px)}
}

@media(max-width:380px){.page{padding-left:11px;padding-right:11px}
.metric-grid article>span{display:none}
.metric-grid article{justify-content:center;text-align:center}
.section-title .text-button{font-size:12px;padding:5px}
.course-scene{padding:16px 11px}
.lesson-row>span:last-child{display:none}
.library-groups{grid-template-columns:1fr}
.library-groups button{min-height:88px}
.story-card,.learn-card,.quiz-card,.task-card,.complete-card{padding:21px 14px}
.audio-actions{grid-template-columns:1fr 1fr}
.audio-actions .icon-button{grid-column:1/3;width:100%}
.self-rate>div{grid-template-columns:1fr}
.task-actions,.complete-actions{grid-template-columns:1fr}
.result-grid span{font-size:10px}
}

@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}
}
