:root{--navy:#1f2d52;--blue:#2e528a;--light-blue:#8faadc;--bg:#f4f6fb;--card:#fff;--border:#d9dfea;--muted:#6b7385;--danger:#c0392b}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:#1b1f2a;font-family:Segoe UI,system-ui,-apple-system,sans-serif;font-size:14px}.topbar{background:var(--navy);color:#fff;padding:14px 28px;display:flex;align-items:center;justify-content:space-between;position:-webkit-sticky;position:sticky;top:0;z-index:20;box-shadow:0 2px 8px rgba(0,0,0,.15)}.topbar h1{font-size:18px;margin:0;font-weight:600}.topbar .sub{font-size:12px;color:var(--light-blue)}.layout{max-width:980px;margin:24px auto;padding:0 20px 80px}.section{background:var(--card);border:1px solid var(--border);border-radius:10px;margin-bottom:18px;overflow:hidden}.section>header{padding:12px 18px;background:#eef2fa;border-bottom:1px solid var(--border);cursor:pointer;display:flex;justify-content:space-between;align-items:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.section>header h2{margin:0;font-size:15px;color:var(--navy)}.section>header .page-tag{font-size:11px;color:var(--muted);background:#fff;border:1px solid var(--border);border-radius:20px;padding:2px 10px}.section .body{padding:18px}.field{margin-bottom:14px}.field label{display:block;font-size:12px;font-weight:600;color:var(--muted);margin-bottom:5px;text-transform:uppercase;letter-spacing:.03em}.field input,.field select,.field textarea{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:6px;font:inherit;background:#fff}.field textarea{resize:vertical;min-height:64px}.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(46,82,138,.12)}.grid2{grid-template-columns:1fr 1fr;grid-gap:0 16px}.grid2,.grid3{display:grid;gap:0 16px}.grid3{grid-template-columns:1fr 1fr 1fr;grid-gap:0 16px}.btn{border:1px solid var(--border);background:#fff;color:var(--navy);border-radius:6px;padding:7px 14px;font:inherit;font-weight:600;cursor:pointer}.btn:hover{background:#f0f3fa}.btn.primary{background:var(--navy);color:#fff;border-color:var(--navy)}.btn.primary:hover{background:#16213f}.btn.primary:disabled{opacity:.6;cursor:not-allowed}.btn.small{padding:4px 9px;font-size:12px}.btn.danger{color:var(--danger);border-color:#e8c4be}.btn.danger:hover{background:#fbeceb}.row-card{border:1px solid var(--border);border-radius:8px;padding:12px;margin-bottom:10px;background:#fafbfe}.row-card .row-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.row-card .row-head strong{color:var(--navy);font-size:13px}.list-add{margin-top:4px}.scheme-table{width:100%;border-collapse:collapse;font-size:12px}.scheme-table td,.scheme-table th{border:1px solid var(--border);padding:3px}.scheme-table th{background:#eef2fa;color:var(--navy);font-size:11px}.scheme-table input{width:100%;border:none;padding:4px;font:inherit;background:transparent}.scheme-table input:focus{outline:1px solid var(--blue);background:#fff}.scheme-table .narrow{width:38px}.scheme-table td.title-col{min-width:130px}.group-block{border:1px solid var(--border);border-radius:8px;margin-bottom:16px}.group-block .group-head{background:#eef2fa;padding:8px 12px;display:flex;gap:12px;align-items:center;border-bottom:1px solid var(--border)}.group-block .group-head input{max-width:160px}.group-block .group-body{padding:10px;overflow-x:auto}.group-totals{display:flex;gap:12px;padding:8px 12px;align-items:center;flex-wrap:wrap}.group-totals .field{margin:0}.group-totals .field input{max-width:90px}.help{font-size:12px;color:var(--muted);margin:-6px 0 12px}.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--navy);color:#fff;padding:10px 18px;border-radius:8px;box-shadow:0 4px 16px rgba(0,0,0,.25);z-index:50}.toast.error{background:var(--danger)}.inline{display:flex;gap:10px;align-items:center}.spacer{flex:1 1}.muted{color:var(--muted)}.grid4{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:0 12px;gap:0 12px}.tabs{display:flex;background:hsla(0,0%,100%,.12);border-radius:8px;padding:3px}.tab{border:none;background:transparent;color:#cdd7ec;font:inherit;font-weight:600;padding:6px 14px;border-radius:6px;cursor:pointer}.tab.active{background:#fff;color:var(--navy)}.course-layout{display:grid;grid-template-columns:240px 1fr;grid-gap:16px;gap:16px;align-items:start}.course-list{position:-webkit-sticky;position:sticky;top:78px;background:var(--card);border:1px solid var(--border);border-radius:10px;overflow:hidden;max-height:calc(100vh - 110px);overflow-y:auto}.course-list-head{padding:8px 10px 8px 12px;background:#eef2fa;font-size:13px;display:flex;align-items:center;justify-content:space-between;gap:8px}.course-list-head,.course-year-head{font-weight:700;color:var(--navy);border-bottom:1px solid var(--border)}.course-year-head{padding:6px 12px;background:#e3e9f6;font-size:11px;letter-spacing:.04em;text-transform:uppercase}.course-item{display:flex;align-items:center;gap:8px;width:100%;text-align:left;border:none;border-bottom:1px solid var(--border);background:#fff;padding:9px 12px;cursor:pointer;font:inherit}.course-item:hover{background:#f5f8ff}.course-item.active{background:#e8eefb}.course-item-text{display:flex;flex-direction:column;line-height:1.25;overflow:hidden}.course-item-text strong{font-size:13px;color:var(--navy)}.course-item-text .muted{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:160px}.status-dot{width:9px;height:9px;border-radius:50%;flex:0 0 auto}.status-dot.ok{background:#1e7e34}.status-dot.no{background:#d9a400}.course-main{min-width:0}.course-toolbar{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;background:var(--card);border:1px solid var(--border);border-radius:10px;padding:12px 16px;margin-bottom:14px}.checklist{margin-top:6px;font-size:12px}.checklist.ok{color:#1e7e34;font-weight:600}.checklist.no{color:#b9770a}.chip{display:inline-block;background:#fff4e0;border:1px solid #f0d8a8;color:#8a5a00;border-radius:12px;padding:1px 8px;margin:2px 4px 0 0;font-size:11px}.mini-table{width:100%;border-collapse:collapse;font-size:12px}.mini-table td,.mini-table th{border:1px solid var(--border);padding:2px;vertical-align:top}.mini-table th{background:#eef2fa;color:var(--navy);font-size:11px;padding:4px}.mini-table input,.mini-table textarea{width:100%;border:none;padding:4px;font:inherit;background:transparent;resize:vertical}.mini-table input:focus,.mini-table textarea:focus{outline:1px solid var(--blue);background:#fff}