.toast-enter-from[data-v-7780db7c],.toast-leave-to[data-v-7780db7c]{opacity:0;transform:translate(-50%)translateY(16px)}:root{--teal:#18b7c7;--teal-dark:#0fa0b0;--teal-grad:linear-gradient(135deg, #1fc4cf, #149aab);--red:#d6122b;--ink:#303a44;--muted:#94a2ad;--line:#e7ebee;--bg:#f4f6f8;--green:#4caf50;--amber:#f2b633;--shadow:0 2px 12px #1c324014}*{box-sizing:border-box;margin:0;padding:0}body{color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;font-family:Noto Sans TC,-apple-system,PingFang TC,Microsoft JhengHei,Heiti TC,system-ui,sans-serif}a{color:inherit;text-decoration:none}button{cursor:pointer;background:0 0;border:none;font-family:inherit}.topbar{border-bottom:1px solid var(--line);z-index:50;background:#fff;position:sticky;top:0}.topbar-inner{align-items:center;gap:34px;max-width:1320px;height:66px;margin:0 auto;padding:0 24px;display:flex}.brand{align-items:center;gap:10px;display:flex}.brand-logo{color:var(--red);letter-spacing:-1px;border:2px solid var(--red);border-radius:50%;padding:1px 9px 2px;font-size:26px;font-style:italic;font-weight:900;line-height:1}.brand-text strong{color:#c0152a;letter-spacing:2px;font-size:17px;display:block}.brand-text em{color:#5b6b76;letter-spacing:.5px;font-size:10px;font-style:normal}.main-nav{gap:6px;display:flex}.nav-item{position:relative}.nav-item>a{color:#45525c;border-radius:6px;align-items:center;gap:6px;padding:8px 14px;font-size:16px;font-weight:500;display:inline-flex}.nav-item:hover>a,.nav-item.active>a{color:var(--teal)}.caret{opacity:.7;border-top:5px solid;border-left:4px solid #0000;border-right:4px solid #0000;width:0;height:0}.dropdown{border:1px solid var(--line);min-width:160px;box-shadow:var(--shadow);opacity:0;visibility:hidden;background:#fff;border-radius:10px;padding:6px;transition:all .15s;position:absolute;top:100%;left:0;transform:translateY(6px)}.has-menu:hover .dropdown{opacity:1;visibility:visible;transform:translateY(2px)}.dropdown a{color:#45525c;border-radius:6px;padding:9px 14px;font-size:14px;display:block}.dropdown a:hover{color:var(--teal);background:#eefafb}.topbar-right{align-items:center;gap:22px;margin-left:auto;display:flex}.learn-link{color:var(--teal);font-size:16px;font-weight:700}.bell{color:#6a7882;display:flex;position:relative}.bell .badge{background:var(--red);color:#fff;border-radius:10px;padding:1px 6px;font-size:11px;font-weight:700;position:absolute;top:-7px;right:-9px}.user{cursor:pointer;align-items:center;gap:9px;padding:6px 0;display:flex;position:relative}.avatar{background:var(--teal);color:#fff;border:2px solid #bfeaef;border-radius:50%;place-items:center;width:36px;height:36px;font-weight:700;display:grid}.user-name{font-size:15px;font-weight:500}.user-dropdown{border:1px solid var(--line);opacity:0;visibility:hidden;background:#fff;border-radius:12px;width:240px;padding:8px;transition:all .16s;position:absolute;top:52px;right:0;transform:translateY(8px);box-shadow:0 8px 28px #1c324029}.user.open .user-dropdown{opacity:1;visibility:visible;transform:translateY(0)}.ud-head{border-bottom:1px solid var(--line);align-items:center;gap:12px;margin-bottom:6px;padding:10px;display:flex}.ud-head strong{font-size:15px;display:block}.ud-head small{color:var(--muted);font-size:12px}.user-dropdown>a{border-radius:8px;padding:11px 12px;font-size:15px;display:block}.user-dropdown>a:hover{background:#f3f5f7}.user-dropdown .logout{color:var(--red)}.wrap{max-width:1320px;margin:0 auto;padding:0 24px}main{min-height:calc(100vh - 124px)}.page-tabs{border-bottom:1px solid var(--line);background:#fff}.page-tabs .wrap{gap:34px;display:flex}.page-tabs a{color:#5b6b76;border-bottom:3px solid #0000;padding:20px 2px 16px;font-size:17px;font-weight:500}.page-tabs a.active{color:var(--teal);border-color:var(--teal);font-weight:700}.section{padding:30px 0 60px}.pills{flex-wrap:wrap;gap:12px;display:flex}.pill{border:1px solid var(--line);color:#5b6b76;background:#fff;border-radius:20px;padding:8px 20px;font-size:15px}.pill.active{background:var(--teal-grad);color:#fff;border-color:#0000;box-shadow:0 3px 10px #18b7c759}.toolbar{flex-wrap:wrap;align-items:center;gap:16px;margin:22px 0 18px;display:flex}.dropfilter{color:#5b6b76;cursor:pointer;align-items:center;gap:5px;font-size:15px;display:inline-flex}.dropfilter:after{content:"";border-top:5px solid #9aa7b0;border-left:4px solid #0000;border-right:4px solid #0000}.spacer{margin-left:auto}.sort-link{color:var(--teal);cursor:pointer;font-size:15px}.dropfilter-wrap{position:relative}.fm-menu{border:1px solid var(--line);min-width:150px;box-shadow:var(--shadow);z-index:30;background:#fff;border-radius:10px;padding:6px;display:none;position:absolute;top:130%;left:0}.fm-menu.show{display:block}.fm-opt{cursor:pointer;white-space:nowrap;border-radius:6px;padding:9px 14px;font-size:14px}.fm-opt:hover{color:var(--teal);background:#eefafb}.search{border:1px solid var(--line);background:#fff;border-radius:8px;align-items:center;gap:8px;width:280px;padding:10px 14px;display:inline-flex}.search input{border:none;outline:none;flex:1;font-family:inherit;font-size:14px}.search svg{color:#b3bdc5}.card-grid{grid-template-columns:repeat(4,1fr);gap:22px;display:grid}.course-card{border:1px solid var(--line);box-shadow:var(--shadow);background:#fff;border-radius:12px;flex-direction:column;transition:transform .15s,box-shadow .15s;display:flex;overflow:hidden}.course-card:hover{transform:translateY(-4px);box-shadow:0 10px 24px #1c324024}.cc-thumb{color:#fff;text-align:center;place-items:center;height:150px;padding:14px;font-size:22px;font-weight:900;line-height:1.3;display:grid;position:relative}.cc-thumb.cover{padding:0}.cover-svg{width:100%;height:100%;display:block}.cc-tag{z-index:2;color:#9a6a00;background:#fde8a6;border-radius:5px;padding:3px 9px;font-size:12px;font-weight:700;position:absolute;top:10px;left:10px}.cc-body{flex-direction:column;flex:1;padding:16px;display:flex}.cc-title{min-height:46px;font-size:16px;font-weight:700;line-height:1.45}.cc-sub{color:var(--muted);margin-top:8px;font-size:13px}.cc-foot{border-top:1px solid var(--line);align-items:center;gap:12px;padding:14px 16px;font-size:13px;display:flex}.cc-date strong{color:var(--ink);font-size:15px;display:block}.cc-date small{color:var(--muted)}.cc-pass{color:var(--teal);text-align:right;margin-left:auto}.cc-pass small{color:var(--muted);display:block}.cc-hours{color:var(--muted);align-items:center;gap:5px;font-size:13px;display:flex}.cc-enroll{color:var(--teal);font-size:13px}.enroll-hero{background:linear-gradient(120deg,#d6f1f4 0%,#eaf6ed 45%,#f1ecf9 100%);border-bottom:1px solid #e3eef0;padding:26px 0 34px}.enroll-hero .crumb{color:#5b6b76;font-size:14px}.enroll-hero h1{margin:10px 0 22px;font-size:34px;font-weight:700}.kb{grid-template-columns:300px 1fr;gap:30px;padding:30px 0 60px;display:grid}.kb-side h3{border-bottom:2px solid var(--teal);color:var(--teal);align-items:center;gap:8px;padding-bottom:14px;font-size:18px;display:flex}.kb-tree{margin-top:18px}.kb-node{cursor:pointer;border-radius:8px;align-items:center;gap:8px;padding:12px 14px;font-size:15px;display:flex}.kb-node:hover{background:#eefafb}.kb-node.active{color:var(--teal);background:#e7f7f9;font-weight:700}.kb-node .arrow{color:#9aa7b0;font-size:11px}.kb-main h2{margin-bottom:18px;font-size:22px}.file-table{border-collapse:collapse;background:#fff;width:100%}.file-table th{text-align:left;color:var(--muted);border-bottom:1px solid var(--line);padding:14px 12px;font-size:14px;font-weight:500}.file-table td{border-bottom:1px solid var(--line);padding:16px 12px;font-size:15px}.file-table tr:hover td{background:#fafcfd}.f-name{align-items:center;gap:12px;display:flex}.pdf-ico{background:var(--red);color:#fff;border-radius:3px;place-items:center;width:26px;height:30px;font-size:8px;font-weight:700;display:grid}.f-folder{color:#5b6b76;align-items:center;gap:7px;display:inline-flex}.f-folder:before{content:"📁"}.center-tabs{border-bottom:1px solid var(--line);background:#fff}.center-tabs .wrap{gap:30px;display:flex}.center-tabs a{color:#5b6b76;border-radius:10px 10px 0 0;align-items:center;gap:9px;padding:22px 14px 18px;font-size:18px;display:flex}.center-tabs a.active{color:var(--teal);background:#e7f7f9;font-weight:700}.center-tabs .ico{width:22px;height:22px}.cards-row{grid-template-columns:1fr 1fr;gap:28px;margin-top:26px;display:grid}.stat-card{box-shadow:var(--shadow);background:#fff;border-radius:14px;padding:28px 30px}.stat-card h3{margin-bottom:22px;font-size:22px}.donut-wrap{align-items:center;gap:36px;display:flex}.donut{flex:none;width:180px;height:180px;position:relative}.donut .center-num{text-align:center;place-content:center;display:grid;position:absolute;inset:0}.donut .center-num b{font-size:40px}.donut .center-num span{font-size:16px}.legend{flex-direction:column;gap:14px;font-size:15px;display:flex}.legend .li{align-items:center;gap:10px;display:flex}.legend .dot{border-radius:50%;width:11px;height:11px}.legend .val{color:#5b6b76;margin-left:auto;padding-left:30px}.panel{box-shadow:var(--shadow);background:#fff;border-radius:14px;margin-top:28px;padding:26px 30px}.panel h3{margin-bottom:18px;font-size:22px}.data-table{border-collapse:collapse;width:100%}.data-table th{color:var(--muted);text-align:left;border-bottom:2px solid var(--line);white-space:nowrap;padding:12px 14px;font-size:14px;font-weight:500}.data-table td{border-bottom:1px solid var(--line);padding:14px;font-size:14px}.data-table tr:hover td{background:#fafcfd}.tag-pass{color:var(--green);align-items:center;gap:5px;font-weight:500;display:inline-flex}.tag-pass:before{content:"✔";background:var(--green);color:#fff;border-radius:50%;place-items:center;width:16px;height:16px;font-size:10px;display:grid}.btn-primary{background:var(--teal);color:#fff;border-radius:8px;align-items:center;gap:7px;padding:11px 22px;font-size:15px;font-weight:500;display:inline-flex}.btn-primary:hover{background:var(--teal-dark)}.sub-tabs{gap:26px;margin:26px 0 4px;display:flex}.sub-tabs a{color:#5b6b76;border-bottom:3px solid #0000;padding:6px 2px 12px;font-size:16px}.sub-tabs a.active{color:var(--teal);border-color:var(--teal);font-weight:700}.empty{text-align:center;color:var(--muted);padding:70px 0}.empty .ico{opacity:.35;font-size:56px}.empty p{margin-top:14px;font-size:15px}.filterbar{box-shadow:var(--shadow);background:#fff;border-radius:12px;flex-wrap:wrap;align-items:center;gap:16px;padding:22px 30px;display:flex}.input-line{border:1px solid var(--line);background:#fff;border-radius:8px;padding:9px 12px;font-family:inherit;font-size:14px}.plan-card{border:1px solid var(--line);box-shadow:var(--shadow);background:#fff;border-radius:14px;gap:28px;margin-bottom:26px;padding:26px;display:flex}.plan-cover{color:#fff;background-size:cover;border-radius:10px;flex:none;place-items:center;width:290px;height:175px;font-size:26px;font-weight:900;display:grid}.plan-info{flex:1}.plan-info .small{color:var(--muted);font-size:14px}.plan-info h3{margin:6px 0 14px;font-size:24px}.state-tag{border-radius:5px;margin-right:10px;padding:3px 10px;font-size:13px;display:inline-block}.state-going{color:var(--teal);background:#e1f5f8}.state-done{color:var(--green);background:#e6f6e7}.progress-line{align-items:center;gap:14px;margin:16px 0;display:flex}.bar{background:#eef1f3;border-radius:6px;flex:1;height:9px;overflow:hidden}.bar>span{border-radius:6px;height:100%;display:block}.bar.t>span{background:var(--teal)}.bar.y>span{background:var(--amber)}.goal-row{background:#f7f9fa;border-radius:10px;align-items:center;gap:12px;padding:14px 18px;font-weight:700;display:flex}.goal-row .meta{color:var(--muted);gap:18px;margin-left:auto;font-size:13px;font-weight:400;display:flex}.goal-row .circle{border:2px solid #c4ced4;border-radius:50%;width:18px;height:18px}.goal-row .circle.done{background:var(--green);color:#fff;border:none;place-items:center;font-size:11px;display:grid}.notif{position:relative}.notif-panel{border:1px solid var(--line);opacity:0;visibility:hidden;z-index:60;background:#fff;border-radius:14px;width:380px;transition:all .16s;position:absolute;top:48px;right:-10px;overflow:hidden;transform:translateY(8px);box-shadow:0 12px 40px #1c324033}.notif.open .notif-panel{opacity:1;visibility:visible;transform:translateY(0)}.np-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:16px 18px;display:flex}.np-head strong{font-size:16px}.np-head a{color:var(--teal);cursor:pointer;font-size:13px}.np-list{max-height:380px;overflow-y:auto}.np-item{cursor:pointer;border-bottom:1px solid #f1f4f6;gap:12px;padding:14px 18px;display:flex;position:relative}.np-item:hover{background:#f7fafb}.np-item.unread{background:#f0fbfc}.np-ico{background:#eef3f5;border-radius:50%;flex:none;place-items:center;width:38px;height:38px;font-size:20px;display:grid}.np-body{flex:1;min-width:0}.np-title{color:var(--ink);font-size:14px;line-height:1.5}.np-time{color:var(--muted);margin-top:4px;font-size:12px}.np-dot{background:var(--red);border-radius:50%;flex:none;width:8px;height:8px;margin-top:6px}.np-foot{text-align:center;border-top:1px solid var(--line);padding:13px}.np-foot a{color:var(--teal);cursor:pointer;font-size:14px}.bell .badge{display:block}.plan-detail-hero{color:#fff;padding:36px 0}.pdh-inner{align-items:center;gap:34px;display:flex}.pdh-cover{text-align:center;background:#ffffff29;border:2px solid #ffffff4d;border-radius:12px;flex:none;place-items:center;width:280px;height:168px;font-size:24px;font-weight:900;line-height:1.4;display:grid}.pdh-meta{flex:1}.pdh-meta .small{color:#ffffffd9;font-size:14px}.pdh-meta h1{margin:8px 0 14px;font-size:28px}.pdh-meta .state-tag{color:#2b3a44}.pdh-prog{align-items:center;gap:14px;max-width:520px;margin:18px 0 10px;display:flex}.pdh-prog .bar{background:#ffffff4d;flex:1;height:10px}.back-link.light{color:#ffffffe6}.pc-list{flex-direction:column;gap:12px;display:flex}.pc-row{border:1px solid var(--line);background:#fff;border-radius:12px;align-items:center;gap:18px;padding:18px 22px;display:flex}.pc-row.clickable{cursor:pointer;transition:all .12s}.pc-row.clickable:hover{border-color:var(--teal);box-shadow:var(--shadow)}.pc-no{color:#c3ccd2;flex:none;width:30px;font-size:20px;font-weight:900}.pc-main{flex:1;min-width:0}.pc-title{font-size:16px;font-weight:500}.pc-sub{color:var(--muted);margin-top:4px;font-size:13px}.pc-prog{flex:none;align-items:center;gap:10px;width:160px;display:flex}.pc-prog .bar{background:#eef1f3;flex:1;height:8px}.pc-prog small{color:var(--muted);width:34px;font-size:12px}@media (width<=1100px){.pdh-inner{flex-direction:column;align-items:flex-start}.pdh-cover{width:100%}.pc-prog{display:none}.notif-panel{width:320px}}.detail-hero{padding:40px 0}.dh-inner{align-items:center;gap:40px;display:flex}.dh-thumb{border-radius:14px;flex:none;width:340px;height:210px;overflow:hidden;box-shadow:0 8px 24px #00000038}.dh-meta{flex:1}.dh-meta .back{opacity:.85;cursor:pointer;font-size:14px}.dh-meta h1{margin:14px 0 12px;font-size:30px;line-height:1.4}.dh-meta p{opacity:.92;max-width:640px;font-size:16px;line-height:1.7}.dh-info{opacity:.95;flex-wrap:wrap;gap:10px 22px;margin:18px 0 22px;font-size:14px;display:flex}.dh-cta{color:var(--teal);background:#fff;font-weight:700}.dh-cta:hover{background:#f0f0f0}.detail-body{grid-template-columns:1fr 320px;gap:36px;display:grid}.db-main h2{margin-bottom:18px;font-size:22px}.chapter-list{flex-direction:column;gap:12px;display:flex}.chapter{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:10px;align-items:center;gap:16px;padding:16px 20px;transition:all .12s;display:flex}.chapter:hover{border-color:var(--teal);box-shadow:var(--shadow)}.ch-no{color:#c3ccd2;width:28px;font-size:18px;font-weight:900}.ch-title{flex:1;font-size:16px;font-weight:500}.ch-play{width:34px;height:34px;color:var(--teal);background:#eefafb;border-radius:50%;place-items:center;display:grid}.db-side{border:1px solid var(--line);box-shadow:var(--shadow);background:#fff;border-radius:14px;align-self:start;padding:24px}.db-side h3{margin-bottom:16px;font-size:18px}.db-side ul{list-style:none}.db-side li{border-bottom:1px solid var(--line);justify-content:space-between;padding:13px 0;font-size:15px;display:flex}.db-side li:last-child{border:none}.db-side li span{color:var(--muted)}@media (width<=1100px){.dh-inner{flex-direction:column;align-items:flex-start}.dh-thumb{width:100%}.detail-body{grid-template-columns:1fr}}.player-wrap{padding:26px 0 60px}.back-link{color:var(--teal);cursor:pointer;margin-bottom:18px;font-size:14px;display:inline-block}.player-grid{grid-template-columns:1fr 340px;gap:28px;display:grid}.video{aspect-ratio:16/9;background:#0d1622;border-radius:14px;position:relative;overflow:hidden}.video-poster{position:absolute;inset:0}.video-poster .cover-svg{width:100%;height:100%}.video-shade{background:linear-gradient(#0000 55%,#0000008c);position:absolute;inset:0}.play-fab{width:78px;height:78px;color:var(--teal);background:#ffffffeb;border-radius:50%;place-items:center;margin:auto;font-size:30px;transition:transform .15s;display:grid;position:absolute;inset:0;box-shadow:0 6px 20px #0000004d}.play-fab:hover{transform:scale(1.08)}.video-bar{color:#fff;align-items:center;gap:12px;padding:14px 18px;font-size:13px;display:flex;position:absolute;bottom:0;left:0;right:0}.vprog{background:#ffffff4d;border-radius:4px;flex:1;height:6px;overflow:hidden}.vprog>div{background:var(--teal);border-radius:4px;height:100%;transition:width .15s linear}.pl-title{margin:22px 0 4px;font-size:22px}.pl-tabs{border-bottom:1px solid var(--line);gap:26px;margin:16px 0 22px;display:flex}.pl-tabs a{color:#5b6b76;cursor:pointer;border-bottom:3px solid #0000;padding:10px 2px;font-size:16px}.pl-tabs a.active{color:var(--teal);border-color:var(--teal);font-weight:700}.pl-content p{margin-bottom:14px;font-size:16px;line-height:1.85}.pl-content .muted{color:var(--muted);font-size:14px}.done-banner{color:#2f8a44;background:#e8f8ec;border-radius:10px;margin-top:8px;padding:14px 18px;font-weight:500}.done-banner a{color:var(--teal);cursor:pointer;margin-left:8px;font-weight:700}.player-side{border:1px solid var(--line);box-shadow:var(--shadow);background:#fff;border-radius:14px;align-self:start;padding:20px}.player-side h3{justify-content:space-between;align-items:center;margin-bottom:14px;font-size:17px;display:flex}.player-side h3 small{color:var(--muted);font-size:13px;font-weight:400}.pl-chaps{flex-direction:column;gap:6px;display:flex}.pl-chap{cursor:pointer;border-radius:9px;align-items:center;gap:12px;padding:12px;display:flex}.pl-chap:hover{background:#f5f8f9}.pl-chap.cur{background:#e7f7f9}.pl-check{color:#8a97a0;background:#eef1f3;border-radius:50%;flex:none;place-items:center;width:24px;height:24px;font-size:12px;font-weight:700;display:grid}.pl-check.done{background:var(--green);color:#fff}.pl-chap.cur .pl-ch-title{color:var(--teal);font-weight:700}.pl-ch-title{font-size:14px;line-height:1.4}.quiz-hint{color:#5b6b76;margin-bottom:20px;font-size:15px}.q-item{margin-bottom:26px}.q-text{margin-bottom:14px;font-size:16px;font-weight:700}.q-opts{flex-direction:column;gap:10px;display:flex}.q-opt{border:1px solid var(--line);cursor:pointer;border-radius:10px;align-items:center;gap:11px;padding:13px 16px;font-size:15px;transition:all .12s;display:flex}.q-opt:hover{border-color:var(--teal);background:#f6fcfd}.q-opt input{accent-color:var(--teal);width:17px;height:17px}.quiz>.btn-primary{margin-top:8px}.quiz-result{text-align:center;padding:30px 0}.qr-ring{background:conic-gradient(var(--teal) calc(var(--pct) * 1%), #eef1f3 0);border-radius:50%;place-items:center;width:150px;height:150px;margin:0 auto 18px;display:grid}.quiz-result.fail .qr-ring{background:conic-gradient(#e8643c calc(var(--pct) * 1%), #eef1f3 0)}.qr-score{background:#fff;border-radius:50%;place-content:center;width:114px;height:114px;font-size:40px;font-weight:800;display:grid}.qr-score small{font-size:15px;font-weight:400}.qr-msg{margin-bottom:6px;font-size:20px;font-weight:700}.qr-sub{color:var(--muted);margin-bottom:22px}.qr-actions{justify-content:center;gap:12px;display:flex}.btn-ghost{border:1px solid var(--line);color:#5b6b76;background:#fff;border-radius:8px;padding:11px 22px;font-size:15px}.btn-ghost:hover{border-color:var(--teal);color:var(--teal)}.st-badge{border-radius:20px;padding:3px 11px;font-size:13px;font-weight:500;display:inline-block}.st-review{color:#2b8fd1;background:#e1f1fb}.st-pending{color:#c98a17;background:#fff2da}.st-done{color:var(--green);background:#e6f6e7}.st-reject{color:#d6453a;background:#fde7e7}.modal-overlay{z-index:200;opacity:0;background:#14202a73;place-items:center;padding:20px;transition:opacity .18s;display:grid;position:fixed;inset:0}.modal-overlay.show{opacity:1}.modal{background:#fff;border-radius:16px;width:100%;max-width:540px;max-height:90vh;transition:transform .18s;overflow:auto;transform:translateY(14px)scale(.98);box-shadow:0 20px 60px #0000004d}.modal-overlay.show .modal{transform:none}.modal-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:22px 26px;display:flex}.modal-head h3{font-size:20px}.modal-x{color:#9aa7b0;border-radius:8px;width:34px;height:34px;font-size:18px}.modal-x:hover{background:#f3f5f7}.modal-body{flex-direction:column;gap:18px;padding:22px 26px;display:flex}.fld{flex-direction:column;gap:8px;display:flex}.fld>span{font-size:14px;font-weight:500}.fld i{color:var(--red);font-style:normal}.fld .input-line{width:100%;padding:11px 13px;font-size:15px}.fld textarea.input-line{resize:vertical;font-family:inherit}.modal-foot{justify-content:flex-end;gap:12px;padding-top:8px;display:flex}.toast{color:#fff;z-index:300;opacity:0;background:#2b3a44;border-radius:30px;padding:13px 24px;font-size:15px;transition:all .25s;position:fixed;bottom:40px;left:50%;transform:translate(-50%,20px);box-shadow:0 8px 24px #00000040}.toast.show{opacity:1;transform:translate(-50%)}@media (width<=1100px){.player-grid{grid-template-columns:1fr}}.footer{border-top:1px solid var(--line);max-width:1320px;height:58px;color:var(--muted);background:#fff;justify-content:space-between;align-items:center;max-width:none;margin:0 auto;padding:0;font-size:14px;display:flex}.footer>span:first-child{margin-left:max(24px,50% - 636px)}.footer .lang{margin-right:max(24px,50% - 636px)}@media (width<=1100px){.card-grid{grid-template-columns:repeat(2,1fr)}.cards-row,.kb{grid-template-columns:1fr}.plan-card{flex-direction:column}.plan-cover{width:100%}}@media (width<=640px){.card-grid{grid-template-columns:1fr}.main-nav,.user-name,.learn-link{display:none}}.auth-page{background:var(--bg);grid-template-columns:1fr 1fr;min-height:100vh;display:grid}.auth-hero{background:var(--teal-grad);color:#fff;flex-direction:column;justify-content:center;padding:64px 56px;display:flex;position:relative;overflow:hidden}.auth-hero .ah-brand{z-index:1;align-items:center;gap:14px;margin-bottom:40px;display:flex;position:relative}.auth-hero .ah-logo{color:var(--red);letter-spacing:1px;background:#fff;border-radius:8px;padding:8px 14px;font-size:22px;font-weight:900}.auth-hero h1{z-index:1;font-size:34px;line-height:1.35;position:relative}.auth-hero p{opacity:.92;z-index:1;margin-top:18px;line-height:1.9;position:relative}.auth-hero .ah-points{z-index:1;gap:14px;margin-top:34px;display:grid;position:relative}.auth-hero .ah-points li{align-items:center;gap:10px;list-style:none;display:flex}.auth-hero .ah-points .ico{font-size:20px}.auth-hero:after{content:"";background:#ffffff1a;border-radius:50%;width:420px;height:420px;position:absolute;bottom:-160px;right:-140px}.auth-panel{justify-content:center;align-items:center;padding:40px;display:flex}.auth-card{width:100%;max-width:400px;box-shadow:var(--shadow);background:#fff;border-radius:14px;padding:40px 36px}.auth-card h2{margin-bottom:6px;font-size:24px}.auth-card .sub{color:var(--muted);margin-bottom:28px;font-size:14px}.field{margin-bottom:18px;display:block}.field>span{margin-bottom:7px;font-size:13px;font-weight:700;display:block}.field>span i{color:var(--red);font-style:normal}.field input,.field select,.field textarea{border:1px solid var(--line);width:100%;color:var(--ink);background:#fff;border-radius:8px;padding:11px 13px;font-family:inherit;font-size:14px;transition:border-color .15s,box-shadow .15s}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--teal);outline:none;box-shadow:0 0 0 3px #18b7c724}.field input:disabled,.field select:disabled,.field textarea:disabled{color:var(--muted);background:#f7f9fa}.field textarea{resize:vertical;min-height:92px}.field .hint{color:var(--muted);margin-top:6px;font-size:12px;display:block}.field .err{color:var(--red);margin-top:6px;font-size:12px;display:block}.btn-block{justify-content:center;width:100%}.auth-links{justify-content:space-between;margin-top:20px;font-size:13px;display:flex}.auth-links a{color:var(--teal);cursor:pointer}.auth-links a:hover{text-decoration:underline}.auth-demo{border-top:1px solid var(--line);color:var(--muted);margin-top:26px;padding-top:20px;font-size:12.5px}.auth-demo strong{color:var(--ink);margin-bottom:8px;font-size:13px;display:block}.auth-demo .row{cursor:pointer;border-radius:5px;justify-content:space-between;padding:5px 0;display:flex}.auth-demo .row:hover{background:#f4f6f8}.auth-demo .row code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.alert{border-radius:8px;margin-bottom:18px;padding:11px 14px;font-size:13.5px;line-height:1.6}.alert.error{color:#b3122a;background:#fdecee}.alert.success{color:#2e7d3a;background:#e9f7ec}.alert.info{color:#0d7f8c;background:#e8f6f8}.loading-box{color:var(--muted);justify-content:center;align-items:center;gap:12px;padding:60px 20px;display:flex}.spinner{border:3px solid var(--line);border-top-color:var(--teal);border-radius:50%;width:22px;height:22px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{background:linear-gradient(90deg,#eef1f3 25%,#f6f8f9 50%,#eef1f3 75%) 0 0/200% 100%;border-radius:8px;animation:1.2s infinite shimmer}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton-card{height:300px}.pager{justify-content:center;align-items:center;gap:6px;margin-top:28px;display:flex}.pager button{border:1px solid var(--line);min-width:34px;height:34px;color:var(--ink);background:#fff;border-radius:7px;padding:0 9px;font-size:13px}.pager button:hover:not(:disabled){border-color:var(--teal);color:var(--teal)}.pager button.active{background:var(--teal);border-color:var(--teal);color:#fff;font-weight:700}.pager button:disabled{opacity:.4;cursor:not-allowed}.pager .pager-info{color:var(--muted);margin-left:12px;font-size:13px}.admin-shell{grid-template-columns:232px 1fr;min-height:calc(100vh - 58px);display:grid}.admin-side{color:#cfd8de;background:#22303c;align-self:start;max-height:calc(100vh - 58px);padding:20px 0 40px;position:sticky;top:58px;overflow-y:auto}.admin-side .as-group{letter-spacing:1.4px;color:#7d8f9c;text-transform:uppercase;padding:16px 22px 7px;font-size:11.5px}.admin-side a{cursor:pointer;border-left:3px solid #0000;align-items:center;gap:10px;padding:10px 22px;font-size:14px;display:flex}.admin-side a:hover{color:#fff;background:#ffffff0f}.admin-side a.router-link-active{border-left-color:var(--teal);color:#fff;background:#18b7c729;font-weight:700}.admin-side a .ico{text-align:center;width:18px}.admin-main{background:var(--bg);min-width:0;padding:28px 34px 60px}.admin-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:22px;display:flex}.admin-head h1{font-size:23px}.admin-head .sub{color:var(--muted);margin-top:4px;font-size:13.5px}.admin-head .actions{gap:10px;display:flex}.stat-grid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:16px;margin-bottom:24px;display:grid}.stat-tile{box-shadow:var(--shadow);background:#fff;border-radius:12px;padding:20px 22px}.stat-tile .st-label{color:var(--muted);align-items:center;gap:7px;font-size:13px;display:flex}.stat-tile .st-value{letter-spacing:-.5px;margin-top:10px;font-size:30px;font-weight:900}.stat-tile .st-foot{color:var(--muted);margin-top:8px;font-size:12.5px}.stat-tile .st-value.teal{color:var(--teal)}.stat-tile .st-value.green{color:var(--green)}.stat-tile .st-value.amber{color:var(--amber)}.stat-tile .st-value.red{color:var(--red)}.admin-table td .ops{gap:12px;display:flex}.admin-table td .ops a{color:var(--teal);cursor:pointer;font-size:13px}.admin-table td .ops a:hover{text-decoration:underline}.admin-table td .ops a.danger{color:var(--red)}.admin-table tbody tr:hover{background:#fafbfc}.chip{color:#64727d;background:#eef1f3;border-radius:20px;padding:3px 10px;font-size:12px;font-weight:700;display:inline-block}.chip.on{color:#2e7d3a;background:#e9f7ec}.chip.off{color:#b3122a;background:#fdecee}.chip.warn{color:#a76d00;background:#fff5e0}.chip.info{color:#0d7f8c;background:#e8f6f8}.sortable-list{gap:10px;display:grid}.sortable-list .sl-item{border:1px solid var(--line);background:#fff;border-radius:10px;align-items:flex-start;gap:12px;padding:14px 16px;display:flex}.sortable-list .sl-no{color:#64727d;background:#eef1f3;border-radius:50%;flex:0 0 26px;place-items:center;width:26px;height:26px;margin-top:6px;font-size:12px;font-weight:700;display:grid}.sortable-list .sl-body{flex:1;gap:10px;min-width:0;display:grid}.sortable-list .sl-row{flex-wrap:wrap;gap:10px;display:flex}.sortable-list .sl-ops{flex-direction:column;gap:6px;display:flex}.sortable-list .sl-ops button{border:1px solid var(--line);color:#64727d;background:#fff;border-radius:6px;width:28px;height:26px;font-size:12px}.sortable-list .sl-ops button:hover:not(:disabled){border-color:var(--teal);color:var(--teal)}.sortable-list .sl-ops button:disabled{opacity:.35;cursor:not-allowed}.bar-chart{align-items:flex-end;gap:14px;height:170px;padding:10px 4px 0;display:flex}.bar-chart .bc-col{flex-direction:column;flex:1;align-items:center;gap:8px;height:100%;display:flex}.bar-chart .bc-bar{background:var(--teal-grad);border-radius:6px 6px 0 0;width:100%;max-width:46px;min-height:4px;margin-top:auto;transition:height .3s}.bar-chart .bc-label{color:var(--muted);font-size:11.5px}.bar-chart .bc-value{font-size:12.5px;font-weight:700}@media (width<=1024px){.auth-page{grid-template-columns:1fr}.auth-hero{display:none}.admin-shell{grid-template-columns:1fr}.admin-side{max-height:none;padding:0;display:flex;position:static;overflow:auto hidden}.admin-side .as-group{display:none}.admin-side a{white-space:nowrap;border-bottom:3px solid #0000;border-left:none}.admin-side a.router-link-active{border-left:none;border-bottom-color:var(--teal)}}@media (width<=720px){.admin-main{padding:20px 16px 50px}.auth-card{padding:30px 22px}}
