:root{font-family:"Microsoft YaHei","PingFang SC",Arial,sans-serif;color:#143b45;background:#f6f8f7;font-size:14px}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button{cursor:pointer}a{color:inherit}.header{height:76px;background:#fff;border-bottom:1px solid #e1e9e8;display:flex;align-items:center;justify-content:space-between;padding:0 max(24px,calc((100vw - 1160px)/2));gap:20px}.brand{display:flex;align-items:center;gap:18px;text-decoration:none;font-weight:700}.brand img{width:132px;height:46px;object-fit:cover;object-position:center 47%}.brand span{border-left:1px solid #d6e3e1;padding-left:18px}.site-link{color:#648084;text-decoration:none}main{max-width:1160px;margin:0 auto;padding:42px 24px 90px}h1,h2,h3,p{margin-top:0}h1{font-size:30px;letter-spacing:-.03em;margin-bottom:10px}h2{font-size:22px;margin-bottom:7px}h3{font-size:17px;margin-bottom:8px;line-height:1.45}.eyebrow{color:#07818b;font-size:12px;font-weight:700;letter-spacing:.08em;margin-bottom:12px}.login-card{max-width:440px;background:#fff;border:1px solid #dee8e6;border-radius:12px;padding:34px;margin:8vh auto 0}.login-card>p:not(.eyebrow){line-height:1.75;color:#657e82}.login-card form,.password-form{display:grid;gap:17px;margin-top:28px}.password-form{max-width:480px;background:#fff;border:1px solid #e1e9e8;border-radius:10px;padding:26px}.login-card label,.password-form label,#study-form label{display:grid;gap:8px;font-size:13px;font-weight:600}input{width:100%;padding:12px 13px;border:1px solid #cbdcda;border-radius:7px;background:#fff;color:#143b45;outline:none}input:focus{border-color:#07818b;box-shadow:0 0 0 3px #d9eeeb}button[type=submit],.primary{border:0;border-radius:7px;background:#087f8a;color:#fff;padding:12px 18px;font-weight:700;text-decoration:none;text-align:center}.quiet,.secondary{border:1px solid #cadbd9;background:#fff;color:#436e73;border-radius:7px;padding:10px 14px;font-weight:600}.message{color:#a34930;line-height:1.5}.message:empty{display:none}.intro{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:24px}.intro p:last-child,.section-head p{color:#678084;line-height:1.7;margin-bottom:0}.notice{padding:13px 16px;border-radius:8px;border:1px solid #d5e8e4;background:#eaf4f2;color:#527478;margin-bottom:20px}.nav{display:flex;gap:28px;border-bottom:1px solid #d6e2e0;margin:18px 0 34px}.nav button{border:0;border-bottom:3px solid transparent;background:transparent;padding:0 1px 14px;color:#71898c;font-weight:600}.nav button[aria-current=page]{color:#087f8a;border-bottom-color:#087f8a}.view[hidden],#login-view[hidden],#app-view[hidden],#password-notice[hidden]{display:none!important}.section-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:24px}.year-switch{display:flex;gap:5px;border:1px solid #d4e3e0;border-radius:8px;padding:4px;background:#fff}.year-switch button{border:0;border-radius:5px;background:transparent;color:#617f83;padding:8px 13px;font-weight:600;white-space:nowrap}.year-switch button[aria-pressed=true]{background:#087f8a;color:#fff}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.stats>div{padding:18px 20px;border:1px solid #dfebe8;border-radius:9px;background:#fff}.stats span{display:block;color:#71898c;font-size:12px;margin-bottom:7px}.stats strong{font-size:22px}.basis{font-size:12px;color:#71878a;margin:14px 0 24px;line-height:1.6}.course-list,.activity-list{display:grid;gap:11px}.course-card{background:#fff;border:1px solid #dfebe8;border-radius:9px;padding:20px 22px;display:flex;justify-content:space-between;align-items:center;gap:24px}.course-card p{color:#5f797c;line-height:1.65;margin-bottom:10px;max-width:680px}.course-kicker,.course-meta{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;color:#6b8588;margin-bottom:9px}.course-kicker .completed{color:#07806f;font-weight:700}.course-meta{margin:0}.course-actions{display:flex;flex-direction:column;align-items:stretch;gap:8px;min-width:150px}.course-actions .secondary{font-size:12px}.activity-row{background:#fff;border:1px solid #dfebe8;border-radius:8px;padding:16px 20px;display:flex;justify-content:space-between;gap:20px;align-items:center}.activity-row p{color:#688286;margin:5px 0 0}.activity-row time{font-size:12px;color:#789095;white-space:nowrap}.empty{padding:25px;border:1px dashed #cddedb;border-radius:8px;color:#789095;background:#fff}dialog{border:1px solid #d6e4e1;border-radius:11px;padding:0;width:min(450px,calc(100vw - 32px));box-shadow:0 20px 70px #183e4430}dialog::backdrop{background:#0e30368c}#study-form{position:relative;padding:30px}#study-form p:not(.eyebrow){color:#657d81;line-height:1.7}.dialog-close{position:absolute;right:15px;top:13px;border:0;background:transparent;font-size:24px;color:#789095}.dialog-actions{display:flex;gap:9px;margin-top:20px}@media(max-width:700px){.header{height:66px;padding:0 16px}.brand{gap:10px}.brand img{width:92px}.brand span{padding-left:10px;font-size:12px}.site-link{font-size:12px}main{padding:25px 16px 60px}.intro{align-items:flex-start}h1{font-size:26px}.section-head{flex-direction:column}.year-switch{width:100%;justify-content:space-between}.year-switch button{flex:1;padding:9px 6px}.stats{grid-template-columns:repeat(2,1fr)}.stats>div:last-child{grid-column:span 2}.course-card{align-items:flex-start;flex-direction:column;padding:18px}.course-actions{width:100%;flex-direction:row}.course-actions>*{flex:1}.activity-row{align-items:flex-start;flex-direction:column;gap:9px}.login-card{padding:25px;margin-top:4vh}}
.episode-filters{display:grid;grid-template-columns:2fr 1fr 1fr;gap:12px;margin-bottom:12px}.episode-filters label{display:grid;gap:6px;color:#57777a;font-size:12px;font-weight:700}.episode-filters select{width:100%;padding:11px 12px;border:1px solid #cbdcda;border-radius:7px;background:#fff;color:#143b45}.catalog-count{color:#638084;white-space:nowrap}.pager{text-align:center;margin-top:20px}.episode-series{color:#55777b;font-size:12px;margin-bottom:5px}.episode-title{font-weight:700}.episode-note{font-size:12px;color:#71898c;margin-top:8px}.episode-filters input{min-width:0}@media(max-width:700px){.episode-filters{grid-template-columns:1fr 1fr}.episode-filters label:first-child{grid-column:span 2}.nav{gap:17px;overflow-x:auto;white-space:nowrap}}
.assigned-tools{display:grid;grid-template-columns:minmax(0,2fr) minmax(180px,1fr);gap:12px;margin:0 0 16px}.assigned-tools label{display:grid;gap:7px;color:#57777a;font-size:12px;font-weight:700}.assigned-tools select{width:100%;padding:11px 12px;border:1px solid #cbdcda;border-radius:7px;background:#fff;color:#143b45}@media(max-width:700px){.assigned-tools{grid-template-columns:1fr}}
.learning-category{margin:0 0 24px}.learning-category-heading{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:0 2px 10px;border-bottom:1px solid #d8e5e2}.learning-category-heading h3{font-size:15px;margin:0;color:#24525a}.learning-category-heading span{font-size:12px;color:#769093;white-space:nowrap}.series-card{background:#fff;border:1px solid #dce8e5;border-radius:9px;margin-top:10px;overflow:hidden}.series-card[open]{border-color:#b5d6d1}.series-summary{display:flex;align-items:center;gap:18px;padding:18px 20px;cursor:pointer;list-style:none}.series-summary::-webkit-details-marker{display:none}.series-summary:focus-visible,.episode-link:focus-visible,.episode-record:focus-visible{outline:3px solid #90cec9;outline-offset:2px}.series-name{display:grid;gap:5px;min-width:0;flex:1}.series-name strong{font-size:15px;line-height:1.5;overflow-wrap:anywhere}.series-name small{font-size:12px;color:#718b8e}.series-progress{font-size:12px;color:#098273;background:#eaf5f1;border-radius:5px;padding:6px 9px;white-space:nowrap}.series-chevron{font-size:22px;color:#68878a;line-height:1;transition:transform .18s ease}.series-card[open] .series-chevron{transform:rotate(180deg)}.episode-rows{border-top:1px solid #e2ebe9;background:#fcfdfc}.episode-row{display:grid;grid-template-columns:55px minmax(0,1fr) auto;align-items:center;gap:15px;padding:13px 20px;border-bottom:1px solid #edf2f0}.episode-row:last-child{border-bottom:0}.episode-number{font-size:12px;font-weight:700;color:#0b858e;font-variant-numeric:tabular-nums}.episode-main{min-width:0;display:grid;gap:6px}.episode-main strong{font-size:13px;font-weight:600;line-height:1.5;overflow-wrap:anywhere}.episode-row-meta{display:flex;flex-wrap:wrap;gap:6px 13px;color:#788e91;font-size:11px}.confirmed-mark{color:#078677}.episode-row-actions{display:flex;align-items:center;gap:8px;white-space:nowrap}.episode-link,.episode-record{font:inherit;font-size:12px;font-weight:700;border-radius:6px;padding:8px 11px;text-decoration:none}.episode-link{background:#087f8a;color:#fff}.episode-record{background:#fff;border:1px solid #c6d9d6;color:#4d7377}.episode-link:hover{background:#066c75}.episode-record:hover{background:#eef6f4}@media(max-width:700px){.learning-category-heading{align-items:flex-start}.series-summary{padding:15px;gap:10px}.series-progress{display:none}.episode-row{grid-template-columns:38px minmax(0,1fr);padding:14px 15px;gap:7px 10px}.episode-row-actions{grid-column:2;white-space:normal}.episode-link,.episode-record{flex:1;text-align:center}}@media(prefers-reduced-motion:reduce){.series-chevron{transition:none}}
.timed-session{background:#fff;border:1px solid #99c8c3;border-left:4px solid #087f8a;border-radius:10px;padding:22px 24px;margin:0 0 28px;box-shadow:0 10px 35px #153b4510}.timed-session[hidden]{display:none}.timed-session-heading{display:flex;justify-content:space-between;gap:20px;align-items:flex-start}.timed-session-heading h2{font-size:19px}.timed-session-heading p:not(.eyebrow){color:#688286;line-height:1.6;margin:0}.timed-session-heading>strong{font-size:24px;font-variant-numeric:tabular-nums;white-space:nowrap;color:#087f8a}.timed-session-actions{display:flex;align-items:center;gap:15px;flex-wrap:wrap;margin:20px 0}.timed-session-actions>span{font-size:12px;color:#6f8588}.timed-session form{border-top:1px solid #e2ecea;padding-top:18px}.timed-session form>label:first-child{display:grid;gap:8px;font-weight:600;font-size:13px}.timed-session textarea{font:inherit;resize:vertical;width:100%;border:1px solid #cbdcda;border-radius:7px;padding:12px;color:#143b45}.timed-confirm{display:flex;align-items:flex-start;gap:9px;margin:14px 0;color:#536f73;font-size:12px;line-height:1.6}.timed-confirm input{width:auto;margin:3px 0 0}.timed-form-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.timed-form-actions .message{font-size:12px}@media(max-width:700px){.timed-session{padding:18px}.timed-session-heading{flex-direction:column;gap:10px}.timed-session-actions{align-items:stretch;flex-direction:column}.timed-form-actions button{flex:1}}
.timed-readout{display:flex;align-items:center;gap:12px;white-space:nowrap}.timed-readout strong{font-size:24px;font-variant-numeric:tabular-nums;color:#087f8a}.timed-badge{display:inline-flex;align-items:center;gap:7px;border-radius:20px;padding:6px 10px;background:#eef1f1;color:#60777b;font-size:12px;font-weight:600}.timed-badge:before{content:'';width:7px;height:7px;border-radius:50%;background:currentColor}.timed-badge[data-state=running]{color:#187546;background:#e8f6ed}.timed-badge[data-state=running]:before{animation:study-pulse 1.8s ease-in-out infinite}.timed-badge[data-state=paused]{color:#91640c;background:#fff4d9}.timed-badge[data-state=capped]{color:#17656e;background:#e5f1f2}.timed-player{position:relative;width:100%;height:0;padding-bottom:56.25%;border-radius:8px;overflow:hidden;background:#17272c;margin-top:20px}.timed-player iframe{position:absolute;inset:0;width:100%;height:100%;border:0}.timed-player[hidden],#timed-open[hidden],#timed-resume[hidden]{display:none!important}button:focus-visible{outline:3px solid #90cec9;outline-offset:3px}@keyframes study-pulse{50%{opacity:.35;box-shadow:0 0 0 4px #18754612}}@media(prefers-reduced-motion:reduce){.timed-badge[data-state=running]:before{animation:none}}@media(max-width:700px){.timed-readout{width:100%;justify-content:space-between}.timed-readout strong{font-size:22px}}
.timed-player video{position:absolute;inset:0;width:100%;height:100%;border-radius:8px;object-fit:contain;background:#101a1f}#timed-retry[hidden]{display:none!important}
