:root{--ink:#333;--muted:#737d82;--line:#dce1e3;--blue:#337ab7;--blue-dark:#286090;--green:#42735b;--bg:#f6f8f8;--red:#a94442;--amber:#8a6d3b}
*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--bg);font:14px/1.65 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif}a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit}button,a,input,select,textarea{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:wait;opacity:.55}h1,h2,h3,h4,p{margin:0 0 14px}h1{font-size:25px;font-weight:500}h2{font-size:21px;font-weight:500}h3{font-size:17px;font-weight:500}h4{font-size:15px}small,.muted{color:var(--muted)}strong{font-weight:600}header{background:white;border-bottom:1px solid var(--line)}.nav-wrap{max-width:1480px;margin:auto;display:flex;align-items:center;gap:26px;padding:0 26px;min-height:61px}.brand{color:var(--green);font-size:20px;white-space:nowrap;font-weight:500;display:flex;align-items:center;gap:9px}.brand img{width:25px;height:25px}.brand:hover{text-decoration:none}.nav-items{display:flex;align-items:stretch;flex:1;gap:0}.nav-items>a,.nav-items>details>summary{color:#555;padding:18px 13px;display:block;cursor:pointer;white-space:nowrap}.nav-items a.active{color:var(--blue);background:#edf4f9}.nav-items details{position:relative}.nav-items summary{list-style:none}.nav-items summary:after{content:' ▾';font-size:10px;color:#888}.nav-items details[open]>summary{background:#f0f3f4}.dropdown{position:absolute;top:100%;left:0;min-width:160px;background:white;border:1px solid var(--line);box-shadow:0 5px 12px #00000015;z-index:10;padding:6px 0}.dropdown a{display:block;color:#444;padding:7px 18px}.dropdown a:hover{background:#f1f5f7;text-decoration:none}.nav-user{margin-left:auto;display:flex;align-items:center;gap:15px;white-space:nowrap;font-size:13px}.test-banner{text-align:center;color:#886a29;background:#fff9e9;border-bottom:1px solid #f0e5c8;padding:5px 16px;font-size:12px}main{max-width:1400px;padding:30px 28px 48px;min-height:calc(100vh - 190px);margin:auto}.public{max-width:1040px;margin:auto}.page-head{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:22px}.page-head h1,.page-head h2{margin-bottom:3px}.actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:5px;min-height:35px;padding:6px 13px;border:1px solid #ccc;border-radius:4px;background:white;color:#333;line-height:1.5;text-align:center;font-size:13px}.btn:hover{background:#edf0f2;text-decoration:none}.btn-primary{color:white;background:var(--blue);border-color:var(--blue)}.btn-primary:hover{background:var(--blue-dark);color:white}.btn-success{color:white;background:#4b8567;border-color:#42765a}.btn-danger{color:var(--red);border-color:#dcb5b4}.btn-danger:hover{background:#f9eeee}.btn-sm{min-height:29px;padding:3px 8px;font-size:12px}.btn-link{padding:2px 4px;min-height:24px;border:0;background:transparent;color:var(--blue)}.panel{background:white;border:1px solid var(--line);border-radius:4px;margin-bottom:22px;overflow:hidden}.panel-head{background:#f5f6f7;border-bottom:1px solid var(--line);padding:11px 17px;font-weight:500;display:flex;justify-content:space-between;align-items:center;gap:10px}.panel-body{padding:22px}.panel-body>:last-child{margin-bottom:0}.toolbar{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;padding:16px;background:white;border:1px solid var(--line);border-radius:4px;margin-bottom:18px}.toolbar .field{margin:0;min-width:130px}.toolbar label{font-size:12px;color:#666;margin-bottom:4px}.toolbar input,.toolbar select{min-height:34px}.toolbar .search{min-width:250px;flex:1}.table-wrap{overflow:auto;background:white;border:1px solid var(--line);border-radius:4px}table{border-collapse:collapse;width:100%;white-space:nowrap}th{font-weight:500;text-align:left;background:#f3f5f6;color:#555;font-size:13px}th,td{padding:11px 14px;border-bottom:1px solid #e6eaec;vertical-align:middle}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:#fafcfd}td.wrap{white-space:normal;min-width:220px;max-width:420px}td.ops{min-width:140px}.caption{padding:9px 14px;color:#77818a;font-size:12px;border-top:1px solid var(--line)}.field{margin-bottom:17px}.field>label{display:block;margin-bottom:6px;font-weight:500;font-size:13px}.field input:not([type=checkbox]):not([type=radio]),.field select,.field textarea,.control{width:100%;border:1px solid #cbd2d6;border-radius:4px;background:white;padding:8px 10px;min-height:38px;color:#333;outline:none}.field input:focus,.field select:focus,.field textarea:focus{border-color:#66afe9;box-shadow:0 0 0 2px #337ab714}.field textarea{resize:vertical;min-height:92px}.field .hint{display:block;font-size:12px;color:#7e878c;margin-top:4px}.required{color:#bd5552;margin-left:3px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 22px}.form-grid .full{grid-column:1/-1}.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.checks{display:flex;flex-wrap:wrap;gap:12px 20px}.check{display:inline-flex;align-items:center;gap:7px;font-weight:400;font-size:13px;cursor:pointer}.check input{accent-color:var(--blue);width:15px;height:15px}.notice{padding:12px 16px;border:1px solid #cbdfe9;background:#f0f7fc;color:#426b82;border-radius:4px;margin-bottom:20px}.notice.warning{color:var(--amber);background:#fcf8e3;border-color:#f2e7b7}.notice.error{color:var(--red);background:#f9eded;border-color:#e8c6c5}.notice.success{color:#3c763d;background:#edf6ed;border-color:#cfe4cf}.notice ul{margin:5px 0;padding-left:20px}.badge{display:inline-block;border-radius:3px;font-size:12px;padding:2px 8px;white-space:nowrap;color:#66737b;background:#ecf0f2}.badge.blue{color:#31708f;background:#e9f3fa}.badge.green{color:#3c763d;background:#e9f3e9}.badge.amber{color:#8a6d3b;background:#faf1d8}.badge.red{color:#a94442;background:#f8e7e7}.empty{padding:60px 20px;text-align:center;color:#879198}.empty strong{display:block;color:#626e75;font-weight:400;font-size:17px;margin-bottom:7px}.loading{padding:70px;text-align:center;color:#7a8790}.tabs{display:flex;border-bottom:1px solid var(--line);gap:4px;margin-bottom:22px;overflow-x:auto}.tabs a{padding:9px 16px;white-space:nowrap;color:#666;border:1px solid transparent;border-radius:4px 4px 0 0}.tabs a.active{background:white;border-color:var(--line);border-bottom-color:white;color:var(--blue);margin-bottom:-1px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:17px;margin-bottom:25px}.stat{background:white;border:1px solid var(--line);border-radius:4px;padding:19px 22px}.stat .value{display:block;font-size:32px;line-height:1.3;color:#376783;margin-bottom:5px}.stat .label{font-size:13px;color:#7a858b}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:22px}.course-card{display:grid;grid-template-columns:130px 1fr auto;gap:22px;align-items:center;background:white;border:1px solid var(--line);border-radius:4px;padding:23px;margin-bottom:15px}.course-date{border-right:1px solid var(--line);padding-right:18px;color:#5e737d;font-size:13px}.course-date strong{display:block;font-size:21px;color:#364f5c;font-weight:500}.course-info h3{margin:0 0 4px}.course-status{margin:10px 0 5px;display:flex;gap:7px;flex-wrap:wrap}.course-info .description{font-size:12px;color:#78858d;margin:8px 0 0;white-space:pre-line}.course-actions{display:flex;flex-direction:column;gap:8px;min-width:100px}.intro{padding:12px 0 18px}.intro h1{font-size:29px;margin-bottom:8px}.intro p{color:#77858b}.auth{max-width:420px;margin:40px auto}.auth .panel-body{padding:28px 32px}.auth h1{font-size:23px;margin-bottom:23px}.auth .btn-primary{width:100%;margin:6px 0 16px}.auth-switch{font-size:13px;text-align:center;color:#888}.steps{display:flex;gap:0;margin-bottom:26px;border-bottom:1px solid var(--line);counter-reset:steps}.step{flex:1;padding:13px 5px 16px;color:#97a1a5;text-align:center;font-size:13px;border-bottom:2px solid transparent}.step:before{counter-increment:steps;content:counter(steps);display:inline-flex;width:23px;height:23px;align-items:center;justify-content:center;margin-right:8px;border:1px solid #d2d9dc;border-radius:50%;font-size:12px}.step.current{color:var(--blue);border-color:var(--blue)}.step.current:before{background:var(--blue);border-color:var(--blue);color:white}.step.done{color:var(--green)}.section-title{font-size:16px;border-bottom:1px solid var(--line);padding-bottom:10px;margin:8px 0 20px;color:#4f6875}.form-foot{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding-top:20px;margin-top:16px}.form-foot .actions{margin-left:auto}.detail-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px 24px}.detail-item dt{font-size:12px;color:#899299;margin-bottom:3px}.detail-item dd{margin:0;white-space:pre-line;overflow-wrap:anywhere}.detail-item.full{grid-column:1/-1}.timeline{list-style:none;padding:0;margin:0}.timeline li{position:relative;padding:0 0 22px 24px;border-left:1px solid #d9e2e8;margin-left:5px}.timeline li:before{content:'';position:absolute;width:9px;height:9px;left:-5px;top:6px;border-radius:50%;background:#8ca5b5}.timeline li:last-child{border:0;padding-bottom:0}.timeline p{margin:4px 0 0;white-space:pre-line}.timeline .time{font-size:12px;color:#8b959b}.review-layout{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:22px}.sticky{position:sticky;top:18px}.metric-row{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid #ecf0f2}.metric-row:last-child{border:0}.quota-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.quota-grid .field{margin:0}.health-row{border-bottom:1px solid #edf0f2;padding:11px 0}.health-row .check{min-width:180px}.health-row textarea{width:100%;margin-top:8px;border:1px solid #cbd2d6;border-radius:4px;padding:8px;min-height:60px}.subtle{font-size:12px;color:#899399}.doc-content{white-space:pre-line;line-height:1.9}.calendar{display:grid;grid-template-columns:repeat(7,1fr);border-top:1px solid var(--line);border-left:1px solid var(--line);background:white}.cal-day,.cal-head{border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:9px;min-width:0}.cal-head{min-height:auto;text-align:center;background:#f1f4f5;color:#7c898e;font-size:12px}.cal-day{min-height:110px;color:#849198;font-size:12px}.cal-day.today{background:#f0f7fb}.cal-event{display:block;font-size:11px;background:#eaf2f7;border-left:2px solid #7ba3bf;padding:3px 5px;margin-top:4px;color:#456a80;overflow-wrap:anywhere}.bar-chart{display:flex;flex-direction:column;gap:14px}.bar-row{display:grid;grid-template-columns:95px 1fr 34px;gap:10px;align-items:center;font-size:13px}.bar-track{height:15px;background:#eef2f4;border-radius:2px;overflow:hidden}.bar-fill{height:100%;background:#7395ac}.tag-list{display:flex;gap:6px;flex-wrap:wrap}.pretext{white-space:pre-wrap;overflow-wrap:anywhere;font:inherit}.print-only{display:none}footer{border-top:1px solid var(--line);background:white;padding:18px 28px;color:#8a969b;display:flex;justify-content:space-between;font-size:12px;gap:15px}footer nav{display:flex;gap:18px}dialog{border:1px solid #cdd6dc;border-radius:5px;padding:0;width:min(760px,calc(100vw - 28px));max-height:92vh;box-shadow:0 12px 50px #20313c25;color:var(--ink)}dialog::backdrop{background:#10212e60}dialog .modal-head{padding:16px 22px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}dialog .modal-head h2{font-size:20px;margin:0}dialog .modal-body{padding:22px;max-height:70vh;overflow-y:auto}dialog .modal-foot{padding:14px 22px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:8px;background:#fafbfc}#toast{position:fixed;right:24px;bottom:24px;z-index:100;background:#365e75;color:white;border-radius:4px;padding:12px 19px;max-width:min(440px,90vw);box-shadow:0 3px 15px #0002;display:none}#toast.error{background:#994a49}.inline-error{color:var(--red);font-size:13px;margin:10px 0;white-space:pre-line}.permission-list{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.export-count{font-size:12px;color:#88959b}.row-select{width:16px;height:16px;accent-color:var(--blue)}.check-group{padding:12px;background:#fafbfc;border:1px solid #e8edef;margin-bottom:15px}.login-inline{font-size:12px}.table-mini th,.table-mini td{padding:8px 11px;font-size:12px}.breadcrumb{font-size:12px;color:#8b9499;margin-bottom:15px}.mobile-menu{display:none}.guide-list li{margin-bottom:8px}.pagination{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin-top:14px;font-size:12px}.health-summary{display:grid;grid-template-columns:1fr 1fr;gap:12px}.panel-body .notice:last-child{margin-bottom:0}
@media(min-width:1500px){.nav-wrap{padding:0 32px}}
@media(max-width:1100px){.nav-wrap{gap:12px;padding:0 18px}.nav-items>a,.nav-items>details>summary{padding:18px 8px;font-size:13px}.nav-user{gap:8px}.review-layout{grid-template-columns:1fr 300px}.detail-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:820px){.nav-wrap{flex-wrap:wrap;gap:0;padding:12px 18px}.brand{font-size:18px}.nav-user{font-size:12px}.nav-items{width:100%;flex-basis:100%;order:3;overflow:visible;flex-wrap:wrap;margin-top:9px}.nav-items>a,.nav-items>details>summary{padding:7px 9px}.dropdown{z-index:30}.test-banner{font-size:11px}main{padding:23px 16px 36px}.page-head{align-items:flex-start}.page-head h1{font-size:22px}.stats{grid-template-columns:repeat(2,1fr);gap:12px}.stat{padding:15px 18px}.two-col,.review-layout{grid-template-columns:1fr}.sticky{position:static}.review-side{grid-row:1}.course-card{grid-template-columns:98px 1fr;gap:14px;padding:18px}.course-date{padding-right:10px;font-size:12px}.course-date strong{font-size:17px}.course-actions{grid-column:2;flex-direction:row}.course-info h3{font-size:16px}.form-grid.three{grid-template-columns:repeat(2,minmax(0,1fr))}.quota-grid{grid-template-columns:repeat(2,1fr)}.panel-body{padding:18px}.cal-day{min-height:90px;padding:5px}.cal-event{font-size:10px}.calendar{overflow:auto}.steps .step{font-size:12px}.step:before{margin-right:4px}.permission-list{grid-template-columns:repeat(2,1fr)}footer{padding:16px;flex-wrap:wrap}.toolbar .search{min-width:180px}.detail-item.full{grid-column:1/-1}}
@media(max-width:480px){.form-grid,.form-grid.three,.detail-grid{grid-template-columns:1fr}.stats .value{font-size:27px}.stat{padding:14px}.course-card{grid-template-columns:1fr}.course-date{border:0;padding:0}.course-date strong{display:inline;margin-right:9px}.course-actions{grid-column:1}.page-head{flex-wrap:wrap}.auth{margin:15px auto}.auth .panel-body{padding:25px 22px}.step:before{display:none}.toolbar{gap:10px}.toolbar .field{min-width:calc(50% - 10px);flex:1}.toolbar .search{min-width:100%}.health-summary{grid-template-columns:1fr}.panel-body{padding:16px}.detail-item.full{grid-column:auto}}
@media print{header,.test-banner,footer,.actions,.tabs,.toolbar,.review-side,#toast,.no-print{display:none!important}body{background:white;font-size:11px}main{padding:0;max-width:none}.panel{break-inside:avoid;box-shadow:none}.review-layout{display:block}.print-only{display:block}.panel-body{padding:12px}.detail-grid{grid-template-columns:repeat(3,1fr)}.panel-head{background:#f7f7f7}a{color:inherit}.timeline li{break-inside:avoid}}

@media print{.print-form{break-after:page}.print-form:last-child{break-after:auto}}
