@font-face{font-family:Manrope;src:url('/fonts/manrope-latin.woff2')}@font-face{font-family:Cormorant;src:url('/fonts/cormorant-garamond-latin.woff2')}*{box-sizing:border-box}:root{--navy:#0b1723;--ink:#050a10;--ivory:#e9e4dc;--copper:#b98662;--muted:#aaa7a1;--line:#dcd9d2;--green:#386757}body{margin:0;background:#f4f2ed;color:var(--navy);font-family:Manrope,Arial,sans-serif;font-size:13px}button,input,select,textarea{font:inherit}button,.button{border:1px solid var(--line);border-radius:5px;background:white;color:var(--navy);padding:9px 14px;cursor:pointer;text-decoration:none;display:inline-block}button:hover,.button:hover{border-color:var(--copper);background:#f4ebe4}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--copper);outline-offset:3px}.primary{background:var(--navy);color:var(--ivory);border-color:var(--navy)}.primary:hover{background:#263749;color:white}button:disabled{opacity:.5;cursor:wait}header{background:var(--navy);color:var(--ivory);padding:19px 36px;display:flex;justify-content:space-between;align-items:center}.brand{font-family:Cormorant,Georgia,serif;font-size:30px;letter-spacing:4px;text-decoration:none;color:var(--ivory);display:flex;align-items:center;gap:22px}.brand span{font-family:Manrope,sans-serif;font-size:10px;letter-spacing:2px;border-left:1px solid #53606b;padding:8px 22px}.header-right{display:flex;align-items:center;gap:10px}.header-right button{background:transparent;color:var(--ivory);border-color:#35414b;font-size:11px}#save-state{color:var(--muted);font-size:10px;margin-right:10px}main{max-width:1600px;margin:auto;padding:26px 36px}.intro{display:flex;justify-content:space-between;align-items:center;margin-bottom:23px}.eyebrow{font-size:9px;letter-spacing:1.8px;font-weight:700;color:#8b674d}h1{font-family:Cormorant,Georgia,serif;font-weight:400;font-size:38px;line-height:1.1;margin:8px 0}p{color:#6b716f;line-height:1.6;margin:6px 0}h2{font-size:17px;font-weight:600;margin:8px 0}h3{font-size:14px;margin:0 0 10px}.course-head{padding:19px 22px;border:1px solid var(--line);background:#fff;display:flex;justify-content:space-between;align-items:center;border-left:3px solid var(--copper)}#course-details{color:#757b7d;font-size:11px}.workspace-bar{display:flex;align-items:center;justify-content:space-between;margin:19px 0 15px;border-bottom:1px solid var(--line);padding-bottom:12px}.workspace-bar>div{display:flex;gap:7px}.tab{background:none;border:0;border-radius:0;font-size:11px;color:#8c8984;padding:12px 16px}.tab span{font-size:13px;margin-left:9px}.tab.active{color:var(--navy);box-shadow:0 3px var(--copper)}.grid{display:grid;grid-template-columns:1.05fr 1fr;gap:18px}.card{background:white;border:1px solid var(--line);padding:21px;border-radius:6px}.card-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.muted{font-size:11px;color:#858986}.attribute-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.attr{display:flex;align-items:center;gap:10px;border:1px solid #e8e6e0;padding:12px 10px;border-radius:4px;cursor:pointer;min-height:65px}.attr.selected{border-color:#b98662;background:#faf5ef}.attr input{accent-color:var(--copper);width:15px}.attr b{font-size:10px;display:block;margin-bottom:4px;color:#927359}.attr span{font-size:11px}.metric-row{display:grid;grid-template-columns:repeat(3,1fr);border-bottom:1px solid var(--line);padding-bottom:18px;gap:10px;margin-bottom:15px}.metric strong{display:block;font-size:27px;font-weight:500;margin-top:7px}.metric small{color:#888;font-size:10px}.empty{padding:52px 25px;text-align:center;color:#848881}.empty .symbol{font-family:Cormorant,serif;color:var(--copper);font-size:48px}.capacity-row{display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid var(--line);border-radius:5px;margin:8px 0;padding:13px}.capacity-row strong{font-size:12px}.capacity-row small{display:block;margin-top:6px;color:#828682}.badge{font-size:10px;padding:4px 7px;background:#edf3f0;color:var(--green);border-radius:3px}.badge.warn{background:#fbefdf;color:#986627}.badge.manual{background:#eeedf6;color:#726385}.nlo{font-size:20px;color:var(--green);font-weight:500}.nlo.warn{color:#ac723d}.progress{height:4px;background:#e6e8e5;margin-top:10px}.progress i{display:block;background:var(--copper);height:100%}.small-button{padding:6px 9px;font-size:11px}.alert{border:1px solid #e9d5b9;background:#fff7e9;color:#856338;padding:12px 16px;margin-bottom:14px;border-radius:5px;line-height:1.5}.alert summary{cursor:pointer}.success{background:#eff5f1;border-color:#c8dbd0;color:#386757}footer{display:flex;justify-content:space-between;font-size:9px;letter-spacing:.4px;color:#8a8c87;margin-top:25px}dialog{padding:0;border:1px solid var(--line);border-radius:8px;width:min(880px,94vw);max-height:90vh;color:var(--navy);box-shadow:0 20px 90px #0003}dialog::backdrop{background:#07121dcc;backdrop-filter:blur(3px)}.dialog-head,.dialog-foot{padding:16px 22px;background:#f9f8f4;display:flex;justify-content:space-between;align-items:center;gap:12px;position:sticky;top:0;z-index:2}.dialog-foot{bottom:0;border-top:1px solid var(--line);font-size:11px}#dialog-body{padding:22px;max-height:68vh;overflow:auto}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.field{display:flex;flex-direction:column;gap:6px;font-size:11px}.field input,.field select,.field textarea,input.cell{border:1px solid #d6d8d5;border-radius:4px;padding:9px;background:white;color:var(--navy);width:100%;min-width:0}.field textarea{min-height:95px;resize:vertical}.full{grid-column:1/-1}.weights{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}.section{margin-bottom:22px}.upload{border:1px dashed var(--copper);background:#faf7f1;padding:22px;text-align:center;border-radius:5px;margin:10px 0}.upload input{max-width:100%;margin:15px 0}.subtabs{display:flex;flex-wrap:wrap;gap:6px;margin:14px 0}.subtabs button{padding:7px 10px;font-size:11px}.subtabs .active{background:var(--navy);color:white}textarea.large{height:210px}.table-wrap{overflow:auto;max-height:430px}table{border-collapse:collapse;width:100%;font-size:11px}th,td{padding:8px;border-bottom:1px solid #e5e5df;text-align:left}th{position:sticky;top:0;background:#f4f3ee;z-index:1}input.cell{padding:6px;min-width:60px}input.cell.name{min-width:195px}input.cell.code{min-width:95px}#preview-dialog{width:95vw;max-width:1250px;height:94vh;max-height:94vh}#pdf-frame{width:100%;height:calc(100% - 75px);border:0;background:#777}.info-list{display:grid;grid-template-columns:1fr 1fr;gap:12px}.stat-edit{border:1px solid var(--line);border-radius:4px;padding:10px;display:flex;justify-content:space-between;align-items:center;gap:12px}.stat-edit input{width:80px;padding:7px;border:1px solid var(--line);border-radius:4px}.stat-edit label{font-size:11px}.stat-edit .badge{display:block;width:max-content;margin-top:5px}#dialog-status{white-space:pre-line;color:#9b6339;max-width:75%}.checks{display:flex;gap:20px;padding:10px 0}.hint{font-size:11px;margin:9px 0;color:#7e827b}.inline-actions{display:flex;gap:8px;align-items:center;margin:15px 0}.danger{color:#aa4d40}#status:empty{display:none}@media(max-width:1000px){main{padding:20px}.grid{grid-template-columns:1fr}.workspace-bar{align-items:start;gap:12px;flex-wrap:wrap}header{padding:17px 20px}.header-right #save-state{display:none}.brand span{display:none}.attribute-grid{grid-template-columns:1fr 1fr}}@media(max-width:600px){header{flex-wrap:wrap;gap:15px}.intro{align-items:start;gap:12px}h1{font-size:31px}.intro .primary{font-size:10px}.attribute-grid,.form-grid,.info-list{grid-template-columns:1fr}.weights{grid-template-columns:repeat(3,1fr)}.course-head{gap:12px}.workspace-bar>div{flex-wrap:wrap}footer span{display:none}.header-right{gap:5px}.header-right button{padding:6px}.full{grid-column:auto}}

#pdf-pages{height:calc(100% - 75px);overflow:auto;padding:24px;background:#696e72;text-align:center}#pdf-pages img{display:block;max-width:100%;height:auto;margin:0 auto 24px;box-shadow:0 2px 15px #0005}

input.cell.absent{background:#fff1df;color:#8b5524;border-color:#d5aa78;font-weight:600}
[hidden]{display:none!important}.auth-screen{min-height:100vh;background:var(--ink);color:var(--ivory);padding:36px 6vw;display:flex;flex-direction:column}.auth-layout{max-width:1160px;width:100%;margin:auto;display:grid;grid-template-columns:1.2fr 1fr;align-items:center;gap:90px;padding:65px 0}.auth-layout h1{font-size:clamp(44px,5vw,76px);line-height:1.05;margin:24px 0}.auth-layout p{color:var(--muted)}.auth-screen .eyebrow{color:var(--copper)}.auth-card{padding:38px;background:var(--navy);border:1px solid #35414b;border-top:2px solid var(--copper);border-radius:6px}.auth-card h2{font-family:Cormorant,Georgia,serif;font-size:30px;font-weight:400;margin:16px 0 26px}.auth-card .field{margin:18px 0}.auth-card input{background:#111f2c;border-color:#3a454f;color:var(--ivory);padding:13px}.auth-card .primary{width:100%;background:var(--copper);border-color:var(--copper);color:var(--ink);padding:13px}.auth-card #login-error{color:#efb198}.auth-footer{font-size:10px;letter-spacing:1px;color:var(--muted)}.version-bar{display:flex;align-items:center;gap:12px;margin:10px 0;font-size:11px;color:#737976;flex-wrap:wrap}.version-bar>span{margin-right:auto}#save-state{cursor:pointer}.header-right{flex-wrap:wrap;justify-content:flex-end}.auth-card .hint{font-size:10px;margin-top:16px}@media(max-width:800px){.auth-layout{grid-template-columns:1fr;gap:28px;padding:40px 0}.auth-layout h1{font-size:43px}.auth-card{padding:25px}.auth-layout>div p{display:none}.auth-screen{padding:25px}.header-right{justify-content:flex-start}}
