@import"https://fonts.googleapis.com/css2?family=Noto+Sans+TC:wght@400;500;600;700;800&display=swap";:root{font-family:Noto Sans TC,system-ui,sans-serif;color:#213846;background:#f3f6f8;font-synthesis:none;font-size:16px;line-height:1.65;--nav: #122b39;--blue: #2375c6;--line: #e0e7ed;--muted: #6f818c;--accent: #e2b565}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,.button{cursor:pointer;border:1px solid #d9e2e8;border-radius:8px;background:#fff;color:#304957;padding:9px 14px;display:inline-flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;font-size:14px;font-weight:500;transition:background .15s,box-shadow .15s}button:hover,.button:hover{background:#eef5fa;border-color:#b5cddd}button:disabled{opacity:.48;cursor:not-allowed}button.primary,.button.primary{background:var(--blue);color:#fff;border-color:var(--blue)}button.primary:hover{background:#1a63aa}input,select,textarea{max-width:100%;border:1px solid #cedae2;border-radius:7px;background:#fff;color:#213846;padding:10px 12px;min-width:0;font-size:14px}input:focus,select:focus,textarea:focus,button:focus-visible,a:focus-visible{outline:3px solid #6aaaf077;outline-offset:2px}textarea{resize:vertical;min-height:90px}h1,h2,h3,p{margin-top:0}h1{font-size:30px;font-weight:700;line-height:1.4;letter-spacing:-.6px;margin-bottom:10px}h2{font-size:21px;line-height:1.45;margin-bottom:12px}h3{font-size:16px;margin-bottom:7px}p{color:var(--muted);margin-bottom:16px}small{font-size:12px}.muted{color:var(--muted);font-size:13px}.eyebrow{font-size:11px;font-weight:700;letter-spacing:1.8px;color:#668599;display:block;margin-bottom:12px}.app{display:flex;min-height:100vh}.sidebar{width:244px;position:fixed;inset:0 auto 0 0;background:var(--nav);color:#fff;display:flex;flex-direction:column;padding:32px 20px 20px;z-index:20}.brand{display:flex;align-items:center;gap:12px;font-size:24px;font-weight:700;letter-spacing:2px}.brand svg{color:#b7d2df}.brand small{display:block;font-weight:400;font-size:11px;letter-spacing:2px;color:#a3bdcb}.workspace-label{font-size:9px;letter-spacing:1.8px;color:#7994a3;margin:42px 10px 15px}nav{display:flex;flex-direction:column;gap:6px}nav button{background:none;border:0;color:#a9beca;justify-content:flex-start;padding:13px 14px;border-radius:7px;font-size:14px;gap:14px}nav button svg:last-child:not(:first-child){margin-left:auto}nav button:hover{background:#1b3b4d;color:#fff}nav button.active{background:#294a5e;color:#fff;box-shadow:inset 3px 0 #72afd8}.sidebar-bottom{margin-top:auto;display:flex;gap:10px;align-items:center;padding-top:24px;border-top:1px solid #294553;font-size:13px}.sidebar-bottom small{display:block;color:#8ea9b9;font-size:10px}.sidebar-bottom button{padding:6px;background:transparent;border:0;color:#9db6c3}.avatar{width:34px;height:34px;background:#3c5a6c;border-radius:50%;display:grid;place-items:center;color:#d7e8f2}.app>main{margin-left:244px;min-width:0;flex:1}.topbar{height:76px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 38px;gap:16px}.breadcrumb,.top-actions{display:flex;align-items:center;gap:13px;font-size:13px;color:#80929f}.breadcrumb b{font-weight:500;color:#344f60}.statuschip{background:#edf3f7;border-radius:20px;padding:5px 11px;font-size:11px;color:#607e90}.workspace{padding:24px 38px 60px;max-width:1660px;margin:auto}.contextrow{display:flex;justify-content:space-between;align-items:center;margin-bottom:26px;font-size:12px;color:#79909e}.contextrow select{background:transparent;max-width:320px;padding:7px 12px}.pageheading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:25px}.pageheading p{font-size:14px;margin-bottom:0}.pageheading .eyebrow{margin-bottom:8px}.actions,.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.metricgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:26px}.metric{background:#fff;border:1px solid var(--line);border-radius:10px;padding:22px 24px;position:relative;overflow:hidden}.metric:before{content:"";position:absolute;left:0;top:24px;height:28px;width:3px;background:#6e9db8}.metric>span{color:#657f8e;font-size:13px}.metric>strong{display:block;font-size:35px;font-weight:600;line-height:1.7;font-variant-numeric:tabular-nums}.metric>small{color:#8b9aa4;font-size:11px}.panel{background:#fff;border:1px solid var(--line);border-radius:11px;padding:26px;margin-bottom:24px}.overviewgrid{display:grid;grid-template-columns:1.7fr 1fr;gap:24px}.sectionhead{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:18px}.sectionhead h2,.sectionhead h3{margin-bottom:0}.sectionhead .eyebrow{margin-bottom:6px}.linkbutton{border:0;background:transparent;color:#387ba7;padding:8px 0}.timeline{display:flex;align-items:center;gap:18px;padding:21px 0;border-bottom:1px solid #eaf0f4}.timeline:last-child{border-bottom:0}.timeline>div{flex:1}.timeline p{font-size:12px;margin:0}.timeline-no{background:#edf3f7;width:37px;height:37px;border-radius:50%;display:grid;place-items:center;font-size:12px;color:#6f8d9e;font-weight:600;flex-shrink:0}.badge{display:inline-block;font-size:11px;background:#f0f3f6;color:#687f8c;border-radius:5px;padding:3px 8px;white-space:nowrap}.badge.green{background:#eaf4f0;color:#418171}.darkpanel{background:#17394d;color:#fff;border-color:#17394d;display:flex;flex-direction:column}.darkpanel h2{font-size:23px}.darkpanel .eyebrow{color:#9dbdcf}.darkpanel .muted{color:#a4bdcc;font-size:11px}.insight-empty{font-size:15px;line-height:2;color:#a5c0cf;padding:25px 0;flex:1}.darkpanel button{background:#294e65;border-color:#3a5d73;color:#fff;justify-content:space-between;margin-top:auto}.weak{padding:14px 0;border-bottom:1px solid #345266;display:flex;justify-content:space-between}.weak strong{color:#edc581;font-size:24px}.weak small{display:block;font-size:10px;color:#afc4d0}.quickgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.quickgrid button{display:block;text-align:left;padding:22px;background:transparent}.quickgrid h3{display:flex;justify-content:space-between}.quickgrid p{font-size:12px;margin:0}.formgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.field{display:flex;flex-direction:column;gap:7px;font-size:13px;margin-bottom:17px;color:#577183}.field>span{font-weight:500}.field input,.field select,.field textarea{width:100%}.editorgrid{display:grid;grid-template-columns:230px minmax(0,1fr);gap:23px}.unitmenu{align-self:start;padding:20px 15px}.unitmenu>button{width:100%;justify-content:flex-start;text-align:left;border:0;background:none;margin-bottom:6px;gap:13px}.unitmenu>button span{color:#859aa7;font-size:12px}.unitmenu>button.selected{background:#eaf3fa;color:#226ea3}.check{font-size:14px;display:flex;gap:10px;align-items:center;margin-bottom:15px}.check input{width:16px;height:16px}.activityeditor{background:#f9fbfc;border:1px solid #e4ecf1;border-radius:8px;padding:16px;margin:18px 0}.activityeditor summary{font-weight:600;margin-bottom:15px}.activityeditor textarea{min-height:60px}details{border-bottom:1px solid #e6edf1;padding:15px 0}summary{cursor:pointer;font-size:14px}details p{font-size:14px;margin-top:10px}hr{border:0;border-top:1px solid #e4ebf0;margin:26px 0}.uploadbox{padding:16px;background:#edf4f8;border:1px dashed #adc4d3;border-radius:7px;margin-bottom:16px}.uploadbox small{display:block;margin-top:10px;overflow-wrap:anywhere}.uploadbox p{font-size:13px}.notice{padding:15px 18px;background:#edf5fb;border:1px solid #cddfeb;border-radius:8px;font-size:14px;color:#3e667d;margin-bottom:18px}.warning{background:#fff7e8;border-color:#eed8b0;color:#896322;display:flex;align-items:center;justify-content:space-between;gap:12px}.demo-banner{font-size:12px;color:#8a652e;background:#fff5e4;border:1px solid #efe0bf;border-radius:6px;padding:8px 14px;margin-bottom:18px}.error{color:#b54545;background:#fff0f0;padding:10px;border-radius:6px}.success{color:#34785e}.toolbar{margin-bottom:20px}.toolbar input{flex:1;max-width:280px}.tablewrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:14px;text-align:left}th{font-size:12px;font-weight:500;color:#78909f;background:#f6f9fb;padding:12px 16px;border-bottom:1px solid #e1e9ef}td{padding:16px;border-bottom:1px solid #e9eff3;vertical-align:middle}td b{font-weight:500}td .block{color:#879ca9}.block{display:block}.tableprogress{min-width:130px}.tableprogress>span{font-size:12px}.progressline{background:#e5edf3;height:5px;border-radius:5px;overflow:hidden}.progressline>div{height:100%;background:#3c8abd;border-radius:5px}.error-rate{color:#b57342;font-size:20px;font-variant-numeric:tabular-nums}.search{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:8px;padding-left:12px}.search input{border:0;width:230px}.codeinput{width:100%;font-family:monospace;min-height:160px;font-size:13px;margin:14px 0}.empty{text-align:center;padding:50px 20px;color:#8fa5b1}.empty svg{color:#8daaba;margin-bottom:12px}.empty h3{color:#647f90}.empty p{font-size:13px;margin:0}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);background:#17394d;color:#fff;box-shadow:0 8px 30px #17394d33;border-radius:9px;padding:15px 20px;z-index:100;max-width:90vw;font-size:14px;display:flex;align-items:center;gap:15px}.toast button{background:none;border:0;color:#fff;padding:0;font-size:20px}.modalshade{position:fixed;top:0;right:0;bottom:0;left:0;background:#112b3a88;z-index:70;display:flex;align-items:center;justify-content:center;padding:24px;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.modal{width:480px;max-width:100%;max-height:90vh;overflow:auto;border-radius:13px;background:#fff;padding:30px;box-shadow:0 20px 70px #0003}.modal.wide{width:880px}dl{display:grid;grid-template-columns:150px 1fr;font-size:14px;gap:18px}dt{color:#7b929e}dd{margin:0;overflow-wrap:anywhere}.mobile-toggle{display:none}.preview-shell{min-height:100vh;background:#dfe7ed}.previewbar{background:#17394d;display:flex;align-items:center;gap:12px;color:#fff;padding:13px 20px;flex-wrap:wrap;position:sticky;top:0;z-index:30}.previewbar strong{display:flex;align-items:center;gap:8px;font-size:13px}.previewbar button{font-size:12px}.previewbar select{font-size:12px;max-width:160px}.segmented{display:flex;gap:3px}.segmented button.active{background:#8ebcdb}.previewdevice{margin:auto;min-height:calc(100vh - 76px);background:#f3f6f8;transition:max-width .2s}.previewdevice.desktop{max-width:1400px}.previewdevice.tablet{max-width:768px}.previewdevice.mobile{max-width:390px}.student{max-width:1200px;margin:auto;padding:35px 38px 60px}.student-top{display:flex;justify-content:space-between;font-size:12px;color:#8296a2;margin-bottom:12px}.student-top .eyebrow{margin:0}.student-nav{display:flex;align-items:center;gap:20px;background:#17394d;padding:16px 32px;color:#fff}.student-nav>span{margin-left:auto;font-size:13px}.student-nav select{max-width:350px}.student-nav .brand{font-size:20px}.learning-summary{background:#17394d;border-radius:12px;color:#fff;padding:30px 38px;display:flex;justify-content:space-between;align-items:center;margin-bottom:28px}.learning-summary .eyebrow{color:#abc5d6}.learning-summary h2{font-size:45px}.learning-summary h2 small{font-size:15px;font-weight:400;color:#bad0dd}.learning-summary p{color:#bad0dd;font-size:13px;margin-bottom:0}.ring{width:125px;height:125px;border-radius:50%;background:conic-gradient(#8dc7e6 var(--pct),#34576c 0);padding:9px;flex-shrink:0}.ring span{border-radius:50%;background:#17394d;width:100%;height:100%;display:grid;place-items:center;font-size:26px}.unitgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.unitcard{display:flex;align-items:flex-start;text-align:left;padding:25px;gap:19px}.unitcard>div{flex:1}.unitnumber{color:#92adbd;font-size:25px;font-weight:400}.unitcard h3{font-size:18px;margin-top:13px}.unitcard p{font-size:13px}.unitcard footer{display:flex;align-items:center;justify-content:space-between;color:#8097a5;font-size:12px;padding-top:15px;border-top:1px solid #e6eef3}.back{margin-bottom:18px}.unit-meta{display:flex;gap:20px;flex-wrap:wrap;font-size:13px;color:#6f8998;margin-bottom:22px}.learning-layout{display:grid;grid-template-columns:230px minmax(0,1fr);gap:24px}.activitylist section{margin-bottom:23px}.activitylist h3{font-size:12px;color:#7991a0}.activitylist button{width:100%;text-align:left;justify-content:flex-start;background:transparent;border:0;margin-bottom:6px;gap:9px}.activitylist button span{flex:1}.activitylist button.selected{background:#e1eef7;color:#246c9f}.activitycontent{min-height:340px}.activitycontent>p{font-size:14px}.video{aspect-ratio:16/9;background:#153448;border-radius:8px;overflow:hidden;margin:18px 0}.video iframe{width:100%;height:100%}.material{width:100%;height:600px;border:1px solid var(--line);background:#fff;margin-bottom:20px}.textlink{color:#2778aa;font-size:14px}.quiz{max-width:830px;margin:auto;padding:40px 30px}.quiz>.progressline{margin:25px 0 40px}.quiz h2{font-size:25px;line-height:1.65;margin-bottom:25px}.options{display:flex;flex-direction:column;gap:13px;margin-bottom:30px}.options button{padding:18px;text-align:left;justify-content:flex-start;font-size:16px;gap:15px}.options button b{font-size:12px;background:#eaf1f6;border-radius:5px;min-width:30px;height:30px;display:grid;place-items:center}.options button.chosen{border-color:#478fb9;background:#ecf6fe}.options button.correct{border-color:#3d9977;background:#eaf8f2;color:#27654f;opacity:1}.options button.incorrect{border-color:#c57575;background:#fff1f1;color:#a04747;opacity:1}.feedback{padding:20px;border-radius:8px;background:#edf5fa;margin-bottom:24px}.feedback p{font-size:14px;color:#4e7287;margin-bottom:8px}.quizresult{max-width:780px;margin:40px auto;text-align:center}.quizresult>svg{color:#3e9777;margin:20px}.quizresult h1{font-size:65px}.quizresult h1 small{font-size:20px}.reviewanswers{text-align:left;margin-top:30px}.questionimage{max-width:100%;max-height:400px;object-fit:contain}.login{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr}.login-art{padding:60px 9%;background:#153448;color:#fff;display:flex;flex-direction:column;justify-content:center;position:relative}.login-art .brand{position:absolute;top:55px}.login-art .brand span{font-size:10px;letter-spacing:2px;color:#9eb9c9;margin-left:8px}.login-art h1{font-size:clamp(30px,3.8vw,54px);line-height:1.65;font-weight:500;margin-top:100px}.login-art>p{color:#a4becc;font-size:16px;line-height:2}.login-foot{margin-top:100px;font-size:10px;letter-spacing:2px;color:#87a6b9;display:flex;justify-content:space-between}.login-form{align-self:center;padding:70px 15%;max-width:720px}.login-form h2{font-size:28px}.login-form>p{font-size:14px;line-height:2}.loginbutton{width:100%;justify-content:space-between;padding:14px 18px;margin-top:10px}.login-form>.muted{margin-top:12px}.previewdevice.mobile .student{padding:24px 18px}.previewdevice.mobile .pageheading,.previewdevice.mobile .learning-summary{flex-direction:column;align-items:flex-start}.previewdevice.mobile .unitgrid,.previewdevice.mobile .learning-layout{grid-template-columns:1fr}.previewdevice.mobile .activitylist{display:grid;grid-template-columns:1fr;gap:10px}.previewdevice.mobile .activitylist section{min-width:0;margin-bottom:8px}.previewdevice.mobile .ring{display:none}.previewdevice.tablet .learning-layout{grid-template-columns:185px 1fr}@media(min-width:1550px){.workspace{padding-left:55px;padding-right:55px}}@media(max-width:1150px){.sidebar{width:215px;padding:26px 14px}.app>main{margin-left:215px}.workspace{padding:24px}.topbar{padding:0 24px}.metricgrid{gap:12px}.metric{padding:18px}.overviewgrid{grid-template-columns:1.4fr 1fr}.pageheading{align-items:flex-start}.pageheading .actions{max-width:300px}.editorgrid{grid-template-columns:185px 1fr}.quickgrid{gap:12px}.quickgrid button{padding:16px}.previewbar{gap:8px}}@media(max-width:850px){.sidebar{transform:translate(-100%);transition:transform .2s}.sidebar.open{transform:translate(0);box-shadow:10px 0 40px #0003}.app>main{margin-left:0}.mobile-toggle{display:inline-flex}.topbar{height:65px;padding:0 18px}.breadcrumb{display:none}.workspace{padding:22px 18px}.overviewgrid{grid-template-columns:1fr}.metricgrid{grid-template-columns:repeat(2,1fr)}.quickgrid{grid-template-columns:1fr}.darkpanel{min-height:270px}.pageheading{flex-wrap:wrap}.pageheading h1{font-size:25px}.editorgrid{grid-template-columns:1fr}.unitmenu{display:flex;overflow:auto;gap:10px}.unitmenu .sectionhead{min-width:120px;margin:0}.unitmenu>button{width:auto;white-space:nowrap;margin:0}.panel{padding:20px}.login{grid-template-columns:1fr}.login-art{padding:30px 25px}.login-art .brand{position:static}.login-art h1{margin-top:35px;font-size:30px}.login-foot{margin-top:20px}.login-form{padding:40px 25px;max-width:none}.student{padding:25px 20px}.learning-layout{grid-template-columns:1fr}.activitylist{display:grid;grid-template-columns:1fr 1fr;gap:15px}.activitylist section{min-width:0}.student-nav{flex-wrap:wrap;padding:13px 18px}.student-nav>span{margin-left:0}.student-nav select{max-width:240px}.previewbar strong{order:-1;width:100%}.formgrid{gap:12px}.top-actions .statuschip{display:none}}@media(max-width:520px){.formgrid,.unitgrid{grid-template-columns:1fr}.metricgrid{gap:10px}.metric small{font-size:10px}.metric strong{font-size:30px}.contextrow{flex-wrap:wrap;gap:10px}.contextrow select{max-width:100%;width:100%}.sectionhead{flex-wrap:wrap}.timeline{gap:12px;flex-wrap:wrap}.timeline .badge{margin-left:48px}.learning-summary{padding:23px}.learning-summary h2{font-size:33px}.ring{width:80px;height:80px;padding:6px}.ring span{font-size:18px}.learning-summary p{display:none}.modalshade{padding:10px}.modal{padding:20px}.quiz{padding:25px 18px}.quiz .sectionhead{font-size:12px}.quiz h2{font-size:21px}.toast{width:90vw}.search,.search input{width:100%}.top-actions button{font-size:12px}.student-top{flex-wrap:wrap;gap:8px}dl{grid-template-columns:100px 1fr}.toolbar>input,.toolbar>select{width:100%;max-width:none}}:root{--surface: #fff;--page: #f3f6f8;--ink: #213846;--soft: #edf5fa}:root[data-theme=forest]{--blue: #17654e;--nav: #13382e;--accent: #d4b259;--soft: #e7f3ed}:root[data-theme=violet]{--blue: #7041b4;--nav: #2c2043;--accent: #e0b556;--soft: #f1ebfa}:root[data-theme=night]{color-scheme:dark;--blue: #85bcff;--nav: #101923;--accent: #e4c37a;--surface: #1d2b38;--page: #121c26;--ink: #ecf2f8;--soft: #293e50;--line: #465b6d;--muted: #b9c9d7}html,body{background:var(--page);color:var(--ink)}.theme-picker{position:fixed;right:14px;bottom:12px;z-index:120;display:flex;align-items:center;gap:7px;padding:5px 10px;border:1px solid var(--line);border-radius:10px;background:var(--surface);box-shadow:0 2px 12px #0002;font-size:14px}.theme-picker select{width:auto;padding:4px}.panel,.modal,.class-card,.explanations section{background:var(--surface);color:var(--ink)}input,select,textarea,button,.button{color:var(--ink);background-color:var(--surface);border-color:var(--line)}button.primary,.button.primary{background:var(--blue);color:#fff}:root[data-theme=night] button.primary{color:#101923}button:hover,.button:hover,.notice,.feedback,.explanations details{background-color:var(--soft);color:var(--ink)}.class-card{margin:16px 0;border:1px solid var(--line);padding:16px;border-radius:12px}.unit-checks{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:8px;padding:12px 0}.explanations{display:grid;gap:14px;text-align:left}.explanations section{border:1px solid var(--line);padding:14px;border-radius:10px}.explanations details{padding:10px;border-radius:8px;margin-top:6px}.preserve-lines{white-space:pre-wrap}.image-button{display:block;width:100%;background:transparent;border:0;padding:0}.image-modal{max-width:95vw;max-height:95vh;overflow:auto;background:var(--surface);padding:15px}.image-modal img{display:block;max-width:100%;margin:10px auto}.diagnostic-chart{display:block;width:min(100%,650px);height:auto;margin:15px auto}:root[data-theme=night] :is(.workspace,.main,.student,.student-nav,.login,.login-form,.reviewanswers,.contextrow,.toolbar,.pageheading,.previewbar,.question-card,.options button,.unitcard,.activitycard){background-color:var(--page);color:var(--ink)}:root[data-theme=night] :is(h1,h2,h3,h4,label,td,th,summary,.metric strong,.field span){color:var(--ink)}:root[data-theme=night] :is(.muted,small,.metric small){color:var(--muted)}:root[data-theme=night] .options button.correct{background:#184a37;color:#bff5d7}:root[data-theme=night] .options button.incorrect{background:#542d34;color:#ffd4d9}:root[data-theme=night] .error{color:#ffb4b4}:root[data-theme=night] .success{color:#a3e4bd}body{padding-bottom:60px}@media(max-width:600px){.theme-picker{right:8px;bottom:8px}.class-card{padding:10px}.modal{max-height:90vh;overflow:auto}.unit-checks{grid-template-columns:1fr}}
