:root{--ink:#17334f;--muted:#65798b;--blue:#245b94;--blue-deep:#153e6a;--pale:#eef5fb;--line:#e0e8ef;--paper:#fff;--canvas:#f5f8fc;--radius:16px;--font:sans-serif}
*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--canvas);font-family:Inter,"PingFang SC","Microsoft YaHei",system-ui,var(--font);line-height:1.65;font-size:14px}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:wait;opacity:.6}a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,p{margin-top:0}h1{font-size:29px;line-height:1.4;letter-spacing:-.6px;margin-bottom:12px}h2{font-size:18px;line-height:1.5;margin-bottom:12px}h3{font-size:16px}p{margin-bottom:14px}[hidden]{display:none!important}:focus-visible{outline:3px solid #77b4ed;outline-offset:3px}.muted{color:var(--muted)}.small{font-size:12px}.eyebrow{display:block;color:var(--blue);font-size:10px;font-weight:700;letter-spacing:2px;margin-bottom:11px}.button{display:inline-flex;align-items:center;justify-content:center;gap:10px;border:1px solid transparent;border-radius:9px;padding:11px 17px;font-size:13px;font-weight:600;min-height:44px;white-space:nowrap;transition:background .15s,transform .15s}.button:hover:not(:disabled){transform:translateY(-1px)}.button.primary{background:var(--blue);color:#fff}.button.primary:hover:not(:disabled){background:var(--blue-deep)}.button.secondary{background:#fff;color:var(--ink);border-color:var(--line)}.button.secondary:hover:not(:disabled){background:var(--pale)}.wide{width:100%}.button-row{display:flex;gap:10px;flex-wrap:wrap}.text-button{padding:6px 0;border:0;background:transparent;color:var(--blue);font-size:13px;min-height:36px}.icon-button{border:0;background:var(--pale);color:var(--ink);border-radius:50%;width:36px;height:36px;font-size:26px;line-height:1}.note{font-size:12px;line-height:1.8;color:var(--muted);margin:18px 0 0}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:absolute;left:12px;top:-80px;z-index:100;background:#fff;padding:12px}.skip-link:focus{top:12px}.brand{display:flex;align-items:center;gap:12px;color:var(--ink);font-size:17px;font-weight:700;line-height:1.45;letter-spacing:1px}.brand:hover{text-decoration:none}.brand-sub{display:block;font-size:11px;font-weight:400;letter-spacing:3px;color:var(--muted);margin-top:2px}.brand-mark{display:inline-flex;align-items:center;justify-content:center;background:var(--pale);border-radius:13px;color:var(--blue);font-size:31px;width:46px;height:46px;flex-shrink:0}.login-screen{min-height:100vh;display:grid;grid-template-columns:minmax(350px,47%) 1fr}.login-story{background:#173c68;color:#fff;position:relative;overflow:hidden;padding:48px 64px;display:flex;flex-direction:column;min-height:100vh}.brand.light,.brand.light .brand-sub{color:#fff}.brand.light .brand-mark{background:rgba(255,255,255,.12);color:#fff}.story-copy{z-index:1;margin:auto 0;padding:80px 0}.story-copy h1{font-size:clamp(32px,3.6vw,48px);font-weight:500;line-height:1.65;letter-spacing:1px}.story-copy p{color:#c0d4e9;font-size:16px;line-height:2}.light-text{color:#b0cce6}.story-foot{color:#b0cce6;font-size:12px;letter-spacing:5px;z-index:1;margin:0}.isobars{position:absolute;right:-300px;bottom:-280px;width:800px;height:800px;opacity:.24;transform:rotate(-27deg)}.isobars i{position:absolute;inset:0;border:1px solid #bddfff;border-radius:43% 57% 53% 47%}.isobars i:nth-child(2){inset:70px}.isobars i:nth-child(3){inset:140px}.isobars i:nth-child(4){inset:210px}.login-area{display:flex;align-items:center;justify-content:center;padding:48px}.login-card{width:100%;max-width:360px}.login-card h2{font-size:30px;margin-bottom:12px}.login-card>.muted{margin-bottom:34px}.login-card label{font-weight:600;display:block;margin-bottom:9px}.password-field{display:flex;background:#fff;border:1px solid #cbd9e7;border-radius:10px;overflow:hidden}.password-field:focus-within{border-color:var(--blue)}.password-field input{border:0;background:transparent;flex:1;width:0;padding:13px 15px;outline:0}.password-field button{padding:0 14px}.back-link{display:block;text-align:center;margin:22px 0;font-size:13px}.login-note{border-top:1px solid var(--line);padding-top:23px;color:var(--muted);font-size:12px;line-height:1.8}.form-message{min-height:22px;margin:12px 0;font-size:13px}.error{color:#b13d37}.admin-shell{display:grid;grid-template-columns:232px minmax(0,1fr);min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;padding:31px 24px 20px;background:#fff;border-right:1px solid var(--line);display:flex;flex-direction:column}.sidebar .brand{font-size:16px;gap:10px}.sidebar .brand-mark{width:40px;height:40px;font-size:28px}.sidebar .brand-sub{font-size:10px;letter-spacing:2.5px}.sidebar-caption{margin-top:50px;margin-bottom:14px;padding-left:14px;color:#8796a4;font-size:11px;letter-spacing:2px}.admin-nav{display:flex;flex-direction:column;gap:7px}.nav-button{display:flex;align-items:center;gap:13px;border:0;background:transparent;text-align:left;min-height:46px;border-radius:9px;padding:11px 15px;color:var(--muted);font-size:13px}.nav-button span{font-size:20px;width:20px;text-align:center;font-weight:400}.nav-button:hover{background:#f5f8fb}.nav-button.active{color:var(--blue);background:var(--pale);font-weight:600}.sidebar-bottom{margin-top:auto;border-top:1px solid var(--line);padding:24px 12px 0;display:flex;flex-direction:column;gap:8px;font-size:12px}.sidebar-bottom p{color:var(--muted);margin:0 0 4px}.sidebar-bottom button{align-self:flex-start}.online-dot{display:inline-block;width:7px;height:7px;background:#5b9b88;border-radius:50%;margin-right:7px}.main{padding:0 clamp(20px,3.7vw,60px);min-width:0;outline:0}.topbar{height:80px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);font-size:12px;color:var(--muted);margin-bottom:34px}.topbar-note{color:#8b9bab;letter-spacing:1px}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:24px;margin:0 0 28px}.page-heading p{margin:0;font-size:13px}.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin-bottom:26px}.stat{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:22px 23px}.stat p{font-size:12px;color:var(--muted);margin-bottom:9px}.stat strong{font-size:32px;line-height:1.35;font-weight:600;display:block}.stat small{display:block;color:var(--muted);margin-top:8px;font-size:11px}.panel{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:25px;margin-bottom:24px}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:22px}.panel-heading h2{margin:0;font-size:16px}.overview-grid{display:grid;grid-template-columns:1.25fr 1fr;gap:24px}.overview-grid .panel{min-width:0}.gentle-panel{background:linear-gradient(145deg,#f4f9fe,#eaf3fb);border-color:#dae8f4}.gentle-panel h2{font-size:22px}.workflow{list-style:none;padding:0;margin:22px 0 0}.workflow li{display:flex;gap:14px;margin:0 0 20px}.workflow li>span{color:var(--blue);font-size:12px;letter-spacing:1px;border:1px solid #cfdfed;border-radius:50%;height:30px;width:30px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.workflow strong{font-size:13px}.workflow p{margin:3px 0 0;font-size:12px;color:var(--muted)}.attention-item{display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--line);padding:14px 0}.attention-item:last-child{border-bottom:0}.attention-item .attention-icon{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:8px;flex-shrink:0;background:#fff5e9;color:#a86c28}.attention-item .attention-copy{flex:1;min-width:0}.attention-item strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:500}.attention-item p{margin:4px 0 0;font-size:11px;color:var(--muted)}.attention-item .text-button{white-space:nowrap}.empty-inline{padding:25px 0;color:var(--muted);font-size:13px}.course-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.course-card{padding:22px;background:#fff;border:1px solid var(--line);border-radius:13px;min-width:0}.course-card-top{display:flex;justify-content:space-between;gap:10px;align-items:center;font-size:11px;color:var(--muted);margin-bottom:16px}.course-card h3{font-size:17px;margin-bottom:9px}.course-card p{font-size:12px;color:var(--muted);margin-bottom:18px;line-height:1.8}.course-card-bottom{display:flex;justify-content:space-between;gap:10px;align-items:center;border-top:1px solid var(--line);padding-top:13px;font-size:12px;color:var(--muted)}.badge{display:inline-block;border-radius:6px;padding:3px 8px;font-size:11px;white-space:nowrap;background:#edf2f7;color:#63758a}.badge.published,.badge.ready,.badge.working{color:#377563;background:#eaf5ef}.badge.draft,.badge.collecting{color:#99691f;background:#fff4dd}.badge.archived,.badge.planned,.badge.unchecked{color:#647586;background:#f0f3f7}.badge.broken{color:#a6463a;background:#fff0ed}.filters{display:flex;gap:12px;align-items:center;padding:18px;margin-bottom:20px}.search-field{position:relative;flex:1;min-width:150px}.search-field>span{position:absolute;font-size:25px;left:13px;top:3px;color:var(--muted)}.search-field input{padding-left:42px!important;width:100%}.filters select{max-width:220px}.list-panel{padding:23px 0 0}.list-panel .panel-heading{padding:0 24px;margin-bottom:19px}.table-wrap{overflow-x:auto}.resource-table{border-collapse:collapse;width:100%;text-align:left}.resource-table th{background:#f7fafd;color:var(--muted);font-size:11px;font-weight:500;padding:13px 22px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);white-space:nowrap}.resource-table td{padding:20px 22px;border-bottom:1px solid var(--line);font-size:12px;vertical-align:top;min-width:110px}.resource-table tr:last-child td{border-bottom:0}.resource-table td:first-child{min-width:210px;max-width:310px}.resource-title{border:0;background:transparent;color:var(--ink);padding:0;text-align:left;font-weight:600;font-size:13px;line-height:1.7;overflow-wrap:anywhere}.resource-title:hover{color:var(--blue)}.resource-sub{display:block;margin-top:4px;color:var(--muted);font-size:11px;overflow-wrap:anywhere}.row-actions{display:flex;gap:12px;white-space:nowrap;flex-wrap:wrap}.row-actions .text-button{font-size:12px;min-height:24px;padding:0}.empty-state{padding:50px 24px;text-align:center}.empty-state>span{font-size:30px;color:#b4c7d8;display:block;margin-bottom:10px}.empty-state h3{font-weight:500;color:var(--ink);margin-bottom:8px}.empty-state p{color:var(--muted);font-size:13px;margin:0}.backup-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.backup-grid .panel{display:flex;flex-direction:column;align-items:flex-start}.section-icon{width:44px;height:44px;border-radius:13px;background:var(--pale);color:var(--blue);display:flex;align-items:center;justify-content:center;font-size:26px;margin-bottom:20px}.backup-grid .muted{font-size:13px;line-height:1.9}.file-picker{display:block;border:1px dashed #b8cfe2;border-radius:10px;background:#f7faff;padding:18px;width:100%;color:var(--ink);margin:8px 0}.file-picker strong,.file-picker span{display:block}.file-picker strong{font-size:13px}.file-picker span{font-size:11px;color:var(--muted);margin:4px 0 14px}.file-picker input{font-size:12px;width:100%}.import-summary{background:var(--pale);border-radius:10px;padding:16px;margin:16px 0;font-size:12px;width:100%}.import-summary p{margin-bottom:5px}.import-summary ul{padding-left:20px;color:#986320;overflow-wrap:anywhere}.backup-types{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.backup-types div{border-left:2px solid #c7ddf0;padding-left:16px}.backup-types strong{font-size:13px}.backup-types p{font-size:12px;color:var(--muted);margin:5px 0 0}.settings-form{max-width:750px;padding:30px}.settings-form label{display:block;margin:0 0 8px;font-weight:600;font-size:13px}.settings-form input,.settings-form textarea{width:100%;margin-bottom:23px}.settings-form textarea:last-of-type{margin-bottom:7px}.form-actions{margin-top:25px;display:flex;gap:18px;align-items:center}.field-help{color:var(--muted);font-size:11px;line-height:1.8;margin:5px 0 0}.required{color:#bc5145}.status-message{border:1px solid #c9e3d8;background:#f0f9f4;color:#36745f;border-radius:9px;padding:12px 16px;font-size:13px;margin:0 0 22px;overflow-wrap:anywhere}.status-message.is-error{border-color:#f0cfc7;background:#fff3ef;color:#a44337}.admin-footer{color:#8c9cab;font-size:11px;text-align:center;padding:34px 0 28px;letter-spacing:.5px}input:not([type="checkbox"]):not([type="file"]),select,textarea{border:1px solid #d5e0ea;border-radius:8px;background:#fff;color:var(--ink);padding:11px 12px;max-width:100%;min-height:44px}input::placeholder,textarea::placeholder{color:#899aaa;font-size:12px}input:focus,select:focus,textarea:focus{border-color:#77a9d5}textarea{resize:vertical;line-height:1.75}.editor-dialog,.preview-dialog{border:1px solid var(--line);border-radius:17px;padding:0;color:var(--ink);background:#fff;width:calc(100% - 32px);max-width:790px;max-height:calc(100dvh - 48px);box-shadow:0 20px 90px #112f5038;overflow:auto}.editor-dialog::backdrop,.preview-dialog::backdrop{background:#112f5078;backdrop-filter:blur(3px)}.dialog-header{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:23px 28px;border-bottom:1px solid var(--line);background:#fff;position:sticky;top:0;z-index:2}.dialog-header .eyebrow{margin-bottom:3px;font-size:9px}.dialog-header h2{margin:0;font-size:21px}.dialog-fields{padding:25px 28px;display:grid;grid-template-columns:1fr 1fr;gap:19px 20px}.field{min-width:0}.field.full{grid-column:1/-1}.field>label{display:block;margin-bottom:7px;font-size:12px;font-weight:600}.field input,.field select,.field textarea{width:100%}.field-checkbox{display:flex;align-items:center;gap:9px;font-size:13px}.field-checkbox input{width:17px;height:17px}.field-divider{grid-column:1/-1;padding:10px 0 0;border-top:1px solid var(--line);font-size:13px;font-weight:600;color:var(--blue)}.editor-dialog .form-message{margin:0;padding:0 28px 15px;min-height:0}.dialog-footer{padding:18px 28px;display:flex;justify-content:space-between;align-items:center;gap:20px;border-top:1px solid var(--line);background:#f9fbfe;position:sticky;bottom:0}.preview-dialog{max-width:660px}.preview-content{padding:28px}.preview-note{padding:13px 16px;border-radius:9px;background:#fff5de;color:#866320;font-size:12px;margin-bottom:23px}.preview-content h3{font-size:25px;line-height:1.5;overflow-wrap:anywhere}.preview-content .preview-description{white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px}.preview-meta{display:grid;grid-template-columns:110px minmax(0,1fr);gap:12px;font-size:12px;margin:24px 0}.preview-meta dt{color:var(--muted)}.preview-meta dd{margin:0;white-space:pre-wrap;overflow-wrap:anywhere}.preview-link{overflow-wrap:anywhere;word-break:break-all}.import-error{color:#a6463a;font-size:12px}.no-course-warning{padding:12px 15px;border-radius:9px;background:#fff5df;color:#956620;font-size:12px;grid-column:1/-1}
@media(min-width:1500px){.main{max-width:1550px}.course-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:1150px){.admin-shell{grid-template-columns:205px minmax(0,1fr)}.sidebar{padding-left:17px;padding-right:17px}.main{padding:0 25px}.stats-grid{gap:12px}.stat{padding:19px 16px}.overview-grid{grid-template-columns:1fr 1fr;gap:16px}.course-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.panel{padding:21px}.resource-table th,.resource-table td{padding-left:15px;padding-right:15px}.page-heading h1{font-size:25px}.login-story{padding:40px}}
@media(max-width:800px){.login-screen{grid-template-columns:1fr}.login-story{min-height:0;padding:28px 30px}.story-copy{padding:38px 0 8px}.story-copy h1{font-size:29px;line-height:1.55}.story-copy p,.story-foot{display:none}.login-area{padding:38px 26px}.admin-shell{display:block}.sidebar{position:relative;width:100%;height:auto;padding:17px 20px 0;border-right:0;border-bottom:1px solid var(--line)}.sidebar .brand{font-size:15px}.sidebar-caption{display:none}.admin-nav{flex-direction:row;margin:18px -20px 0;padding:0 12px;overflow-x:auto;gap:0}.nav-button{white-space:nowrap;padding:12px;min-height:45px;gap:7px;border-radius:8px 8px 0 0;font-size:12px}.nav-button span{font-size:16px;width:18px}.sidebar-bottom{position:absolute;right:20px;top:17px;margin:0;border:0;padding:0;display:block}.sidebar-bottom p,.sidebar-bottom>a{display:none}.sidebar-bottom button{font-size:12px}.main{padding:0 20px}.topbar{height:58px;margin-bottom:25px}.page-heading{align-items:flex-start;gap:12px;margin-bottom:22px}.page-heading h1{font-size:23px;letter-spacing:0}.page-heading .button{font-size:12px;padding:10px 12px;min-height:41px}.stats-grid{grid-template-columns:repeat(2,1fr);gap:12px}.stat{padding:19px}.stat strong{font-size:30px}.overview-grid{grid-template-columns:1fr}.course-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.backup-grid{grid-template-columns:1fr;gap:0}.panel{padding:21px}.filters{flex-wrap:wrap;padding:14px;gap:10px}.filters .search-field{flex:1 1 100%}.filters select{flex:1;min-width:0;max-width:none;font-size:12px}.list-panel{padding:20px 0 0}.resource-table thead{display:none}.resource-table,.resource-table tbody,.resource-table tr,.resource-table td{display:block;width:100%;min-width:0!important;max-width:none!important}.resource-table tr{padding:18px 20px;border-top:1px solid var(--line);display:grid;grid-template-columns:1fr 1fr;gap:12px}.resource-table td{padding:0;border:0!important;font-size:12px}.resource-table td:first-child{grid-column:1/-1;margin-bottom:2px}.resource-table td:last-child{grid-column:1/-1;border-top:1px solid var(--line)!important;padding-top:12px}.resource-table td[data-label]::before{content:attr(data-label);display:block;color:var(--muted);font-size:10px;margin-bottom:4px}.resource-table .row-actions{gap:20px}.resource-table .row-actions .text-button{min-height:32px}.table-wrap{overflow:visible}.list-panel .panel-heading{padding:0 20px;align-items:flex-start}.list-panel .panel-heading .small{font-size:10px;text-align:right}.backup-types{gap:15px}.settings-form{padding:22px}.editor-dialog,.preview-dialog{max-height:calc(100dvh - 28px)}.dialog-header{padding:19px 20px}.dialog-fields{padding:22px 20px;gap:17px 14px}.dialog-footer{padding:16px 20px}.dialog-footer>#editor-dirty{display:none}.dialog-footer>.button-row{width:100%;justify-content:flex-end;gap:8px}.dialog-footer .button{font-size:12px;padding:10px 12px}.editor-dialog .form-message{padding:0 20px 12px}.preview-content{padding:22px}.admin-footer{padding:20px 0;font-size:10px}}
@media(max-width:480px){.main{padding:0 16px}.topbar-note{font-size:10px;letter-spacing:0}.page-heading{flex-wrap:wrap}.page-heading h1{font-size:22px}.page-heading .button{margin-top:2px}.course-grid{grid-template-columns:1fr}.panel{border-radius:13px}.stats-grid{margin-bottom:20px}.stat{padding:17px}.stat small{font-size:10px}.panel-heading{gap:8px}.panel-heading h2{font-size:15px}.panel-heading .text-button{font-size:11px}.overview-grid{gap:0}.backup-types{grid-template-columns:1fr;gap:18px}.dialog-fields{grid-template-columns:1fr}.field.full,.field-divider{grid-column:auto}.preview-meta{grid-template-columns:85px minmax(0,1fr);gap:10px}.form-actions{flex-wrap:wrap}.settings-form{padding:20px}.admin-nav{scrollbar-width:thin}.sidebar-bottom{right:20px}.empty-state{padding:35px 20px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;scroll-behavior:auto!important}}
.confirm-dialog{border:1px solid var(--line);border-radius:17px;padding:0;background:#fff;color:var(--ink);width:calc(100% - 32px);max-width:470px;max-height:calc(100dvh - 48px);box-shadow:0 20px 90px #112f5038;overflow:auto}.confirm-dialog::backdrop{background:#112f5078;backdrop-filter:blur(3px)}.confirm-message{padding:25px 28px;margin:0;line-height:1.9;white-space:pre-wrap;overflow-wrap:anywhere}.confirm-dialog .dialog-footer{justify-content:flex-end}@media(max-width:800px){.confirm-message{padding:22px 20px}}
.preview-pdf{margin-top:24px;padding-top:20px;border-top:1px solid var(--line);min-width:0}.preview-pdf h4{font-size:16px;margin:0 0 12px}.preview-pdf .note{margin:0 0 15px}.preview-pdf .button-row{margin-bottom:15px}.preview-pdf-frame{display:block;width:100%;height:65vh;min-height:370px;max-height:720px;background:#fff;border:1px solid var(--line);border-radius:8px}@media(max-width:800px){.preview-pdf-frame{min-height:300px;height:60vh}.preview-pdf .button-row .button{flex:1 1 auto;font-size:12px}}
