*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:Montserrat,sans-serif;background:#f0f2f5;color:#2c2e23;font-size:14px;line-height:1.4;-webkit-font-smoothing:antialiased}a{text-decoration:none}button{font-family:Montserrat,sans-serif}.app-wrapper{display:flex;height:100vh;overflow:hidden}.sidebar{width:210px;min-width:210px;height:100vh;background:#fff;box-shadow:3px 0 5px #0000002e;display:flex;flex-direction:column;overflow-y:auto;z-index:3;position:relative;flex-shrink:0}.sidebar-logo{padding:18px 20px 16px;border-bottom:1px solid rgba(44,46,35,.07)}.sidebar-logo-mark{width:34px;height:34px;border-radius:8px;background:#004280;color:#fff;font-size:15px;font-weight:900;display:flex;align-items:center;justify-content:center;letter-spacing:-1px;flex-shrink:0}.sidebar-logo-text{font-size:15px;font-weight:800;color:#2c2e23;letter-spacing:-.3px}.sidebar-logo-sub{font-size:9px;font-weight:600;color:#888;letter-spacing:1px;text-transform:uppercase;margin-top:1px}.sidebar nav ul{list-style:none;padding:10px 0}.sidebar-section-label{display:flex;align-items:center;padding:14px 25px 4px;font-size:9px;font-weight:800;color:#aaa;letter-spacing:1.2px;text-transform:uppercase;-webkit-user-select:none;user-select:none}.sidebar-nav-item{display:flex;align-items:center;width:100%;min-height:40px;padding:9px 25px;color:#888;font-size:12px;font-weight:600;cursor:pointer;position:relative;border-left:2px solid transparent;transition:color .2s,border-color .2s;gap:10px;-webkit-user-select:none;user-select:none}.sidebar-nav-item i{font-size:13px;width:16px;text-align:center;flex-shrink:0}.sidebar-nav-item:hover{color:#7f9e08;border-left-color:#7f9e08}.sidebar-nav-item.active{color:#a22c8c;border-left-color:#a22c8c}.sidebar-nav-item.active i{color:#a22c8c}.sidebar-nav-child{padding-left:32px;font-size:12px;min-height:34px}.nav-new-badge{background:#a22c8c;color:#fff;font-size:8px;font-weight:800;padding:2px 6px;border-radius:10px;letter-spacing:.5px;text-transform:uppercase;flex-shrink:0}.main-panel{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}.demo-banner{background:linear-gradient(90deg,#a22c8c,#7b1e6c);color:#fff;padding:5px 28px;font-size:10px;font-weight:700;display:flex;align-items:center;gap:8px;letter-spacing:.8px;text-transform:uppercase;flex-shrink:0}.demo-banner .pulse-dot{width:6px;height:6px;border-radius:50%;background:#ffffffe6;animation:pulse 1.8s infinite;flex-shrink:0}.guide-strip{display:flex;align-items:center;height:36px;min-height:36px;padding:0 28px;background:#2c2e230a;border-bottom:1px solid rgba(44,46,35,.07);gap:10px;flex-shrink:0}.guide-crumb{font-size:11px;font-weight:700;color:#004280;white-space:nowrap;flex-shrink:0}.guide-tip{font-size:11px;color:#aaa;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.guide-tip:before{content:"— ";color:#ccc}.guide-nav-arrows{display:flex;gap:2px;margin-left:auto;flex-shrink:0}.guide-arrow{width:22px;height:22px;border:1px solid rgba(44,46,35,.15);background:transparent;border-radius:4px;font-size:14px;color:#bbb;cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1;font-family:serif;transition:color .15s,border-color .15s;padding:0}.guide-arrow:hover:not(:disabled){color:#004280;border-color:#00428059}.guide-arrow:disabled{opacity:.3;cursor:not-allowed}.top-bar{background:#fff;border-bottom:1px solid rgba(44,46,35,.09);padding:0 28px;height:52px;min-height:52px;display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.top-bar h1{font-size:17px;font-weight:700;color:#2c2e23}.top-bar-user{display:flex;align-items:center;gap:10px;font-size:11px;color:#888}.top-bar-user-avatar{width:30px;height:30px;border-radius:50%;background:#a22c8c1f;color:#a22c8c;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:800}.content-area{flex:1;overflow-y:auto;padding:24px 28px;display:flex;flex-direction:column}.content-area::-webkit-scrollbar{width:6px}.content-area::-webkit-scrollbar-track{background:#f0f2f5}.content-area::-webkit-scrollbar-thumb{background:#c0c4cc;border-radius:3px}.content-area::-webkit-scrollbar-thumb:hover{background:#004280}.page-title{display:flex;align-items:center;margin-bottom:20px;gap:12px}.page-title h2{font-size:22px;font-weight:700;color:#a22c8c;flex:1;min-width:0}.page-title-actions{display:flex;gap:8px;align-items:center;flex-shrink:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:40px;min-width:120px;padding:0 20px;border-radius:100px;font-family:Montserrat,sans-serif;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.5px;cursor:pointer;border:2px solid #e1e0e0;background:#fff;color:#004280;transition:all .2s;white-space:nowrap;flex-shrink:0}.btn:hover{background:#004280;border-color:#004280;color:#fff}.btn:disabled{opacity:.45;cursor:not-allowed;pointer-events:none}.btn-primary{background:#004280;border-color:#004280;color:#fff}.btn-primary:hover{background:#003060;border-color:#003060;color:#fff}.btn-success{background:#42cd86;border-color:#42cd86;color:#fff}.btn-success:hover{background:#35b872;border-color:#35b872;color:#fff}.btn-danger{color:#d11e1e;border-color:#e1e0e0;background:#fff}.btn-danger:hover{background:#d11e1e;border-color:#d11e1e;color:#fff}.btn-sm{height:34px;min-width:80px;font-size:10px;padding:0 14px}.btn-xs{height:28px;min-width:0;font-size:9px;padding:0 10px}.panel{background:#fff;border-radius:6px;padding:24px 28px;box-shadow:0 0 20px #66666612;width:100%;margin-bottom:18px}.panel:last-child{margin-bottom:0}.panel-flush{padding:0;overflow:hidden}.section-hd{display:flex;align-items:center;gap:8px;margin-bottom:18px}.section-hd h3{font-size:14px;font-weight:700;color:#2c2e23;flex:1}.status-tabs{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:20px}.status-tab{font-size:11px;font-weight:700;color:#2c2e23;border:1px solid #2c2e23;border-radius:8px;padding:7px 12px;cursor:pointer;background:#fff;display:inline-flex;align-items:center;gap:7px;transition:all .15s;letter-spacing:.2px;-webkit-user-select:none;user-select:none}.status-tab:hover{color:#004280;border-color:#004280}.status-tab.active{color:#fff;background:#004280;border-color:#004280}.tab-count{background:#2c2e23;color:#fff;font-size:9px;font-weight:800;padding:2px 6px;border-radius:8px;line-height:1.4}.status-tab.active .tab-count{background:#ffffff40}.responsive-tables{overflow-x:auto;width:100%}.responsive-tables::-webkit-scrollbar{height:6px}.responsive-tables::-webkit-scrollbar-track{background:#f8f8f8}.responsive-tables::-webkit-scrollbar-thumb{background:#c0c4cc;border-radius:3px}.responsive-tables::-webkit-scrollbar-thumb:hover{background:#004280}table{width:100%;border-collapse:collapse}table th{font-family:Montserrat,sans-serif;font-size:11px;font-weight:700;color:#004280;padding:0 20px 12px 10px;border-bottom:2px solid #004280;text-align:left;vertical-align:bottom;white-space:nowrap}table td{font-size:13px;font-weight:400;padding:11px 10px 12px;border-bottom:1px solid rgba(44,46,35,.12);vertical-align:middle}table tr:nth-of-type(2n) td{background:#2c2e2305}.form-group{margin-bottom:16px}.form-group:last-child{margin-bottom:0}.form-label{font-size:12px;font-weight:700;color:#2c2e23;margin-bottom:8px;display:flex;align-items:center;gap:5px}.form-input{width:100%;height:40px;border:1px solid rgba(44,46,53,.35);background:#2c2e3508;border-radius:30px;padding:0 20px;outline:none;font-family:Montserrat,sans-serif;color:#2c2e23;font-weight:400;font-size:13px;transition:border-color .2s,background .2s}.form-input:hover,.form-input:focus{border-color:#2c2e35e6;background:#fff}.form-input::placeholder{color:#2c2e2359}.filter-select{height:40px;border:1px solid rgba(44,46,53,.35);background:#fff;border-radius:30px;padding:0 36px 0 18px;font-family:Montserrat,sans-serif;font-size:12px;font-weight:600;color:#2c2e23;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath fill='%232c2e23' d='M5 6L0 0h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;transition:border-color .2s}.filter-select:hover{border-color:#2c2e35e6}.toggle-row{display:flex;align-items:center;gap:12px;cursor:pointer;-webkit-user-select:none;user-select:none}.toggle-track{width:46px;height:24px;border-radius:12px;background:#ddd;position:relative;transition:background .2s;flex-shrink:0}.toggle-track.on{background:#004280}.toggle-thumb{position:absolute;left:3px;top:3px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #00000040;transition:left .2s}.toggle-track.on .toggle-thumb{left:25px}.toggle-label{font-size:13px;font-weight:600;color:#2c2e23}.toggle-label.muted{color:#999}.badge{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:20px;font-size:10px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;white-space:nowrap;flex-shrink:0}.badge-programme{background:#a22c8c1a;color:#a22c8c;border:1px solid rgba(162,44,140,.25)}.badge-in-progress{background:#0042801a;color:#004280;border:1px solid rgba(0,66,128,.2)}.badge-open{background:#9abf071f;color:#6a8506;border:1px solid rgba(154,191,7,.3)}.badge-awaiting{background:#e68c001a;color:#a06000;border:1px solid rgba(230,140,0,.25)}.badge-completed{background:#42cd861a;color:#2a9a62;border:1px solid rgba(66,205,134,.3)}.badge-new-module{background:#dc323214;color:#b81e1e;border:1px solid rgba(220,50,50,.2)}.tooltip-wrapper{position:relative;display:inline-flex;align-items:center}.tip-icon{display:inline-flex;align-items:center;justify-content:center;width:17px;height:17px;border-radius:50%;background:#0042801f;color:#004280;font-size:9px;font-weight:900;cursor:help;flex-shrink:0;font-style:italic}.info-box{background:linear-gradient(135deg,#004a90,#003468);border-radius:12px;padding:20px 22px;margin-top:18px;color:#fff;display:flex;gap:16px;align-items:flex-start}.info-box-icon{width:38px;height:38px;border-radius:50%;background:#ffffff21;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0;margin-top:1px}.info-box-body{flex:1;min-width:0}.info-box-title{font-size:13px;font-weight:800;margin-bottom:7px;letter-spacing:.2px}.info-box-text{font-size:12px;font-weight:400;line-height:1.65;opacity:.85}.info-box-points{list-style:none;margin-top:10px;display:flex;flex-direction:column;gap:5px}.info-box-points li{font-size:11px;opacity:.8;padding-left:16px;position:relative;line-height:1.5}.info-box-points li:before{content:"→";position:absolute;left:0;opacity:.65}.wizard-steps{display:flex;align-items:center;margin-bottom:22px}.wizard-step{display:flex;align-items:center;gap:8px}.wizard-circle{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;border:2px solid #ddd;background:#fff;color:#aaa;flex-shrink:0;transition:all .2s}.wizard-step.done .wizard-circle{background:#004280;border-color:#004280;color:#fff}.wizard-step.current .wizard-circle{background:#a22c8c;border-color:#a22c8c;color:#fff}.wizard-step-label{font-size:11px;font-weight:700;color:#aaa;white-space:nowrap}.wizard-step.done .wizard-step-label{color:#004280}.wizard-step.current .wizard-step-label{color:#a22c8c}.wizard-line{flex:1;height:2px;background:#ddd;margin:0 10px;max-width:60px;transition:background .2s}.wizard-line.done{background:#004280}.module-list-item{display:flex;align-items:center;gap:12px;padding:13px 0;border-bottom:1px solid rgba(44,46,35,.09)}.module-list-item:last-child{border-bottom:none}.drag-handle{color:#ccc;cursor:grab;font-size:14px;width:18px;text-align:center;flex-shrink:0;-webkit-user-select:none;user-select:none}.drag-handle:hover{color:#888}.module-order-num{width:26px;height:26px;border-radius:50%;background:#004280;color:#fff;font-size:11px;font-weight:800;display:flex;align-items:center;justify-content:center;flex-shrink:0}.module-info{flex:1;min-width:0}.module-name{font-weight:700;font-size:13px;color:#2c2e23}.module-meta{font-size:11px;color:#888;margin-top:2px}.cohort-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px;margin-bottom:18px}.cohort-card{background:#f8fafc;border:1px solid rgba(0,66,128,.12);border-radius:10px;padding:14px 16px;display:flex;align-items:center;gap:12px}.cohort-avatar{width:34px;height:34px;border-radius:50%;background:#0042801a;color:#004280;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:900;flex-shrink:0}.cohort-info{flex:1;min-width:0}.cohort-name{font-weight:700;font-size:13px;color:#2c2e23}.cohort-sub{font-size:10px;color:#888;margin-top:2px}.schedule-grid-table{width:100%;border-collapse:separate;border-spacing:0}.schedule-grid-table th{background:#f8f9fc;border:1px solid rgba(44,46,35,.1);padding:12px 14px;font-size:11px;font-weight:800;color:#004280;text-align:center;border-bottom:2px solid #004280;white-space:nowrap}.schedule-grid-table th.module-col{text-align:left;min-width:170px;border-left:none}.schedule-grid-table td{border:1px solid rgba(44,46,35,.08);padding:8px;vertical-align:top;min-width:175px}.schedule-grid-table td.module-col-cell{background:#f8f9fc;border-left:3px solid #a22c8c;padding:10px 14px}.module-col-cell-name{font-weight:700;font-size:12px;color:#2c2e23}.module-col-cell-sub{font-size:10px;color:#888;margin-top:2px}.sched-cell{border-radius:7px;min-height:78px;display:flex;flex-direction:column;gap:5px;cursor:pointer;transition:box-shadow .15s}.sched-cell:hover{box-shadow:0 0 0 2px #00428040}.sched-cell.filled{background:#0042800a;border:1px solid rgba(0,66,128,.12);padding:9px}.sched-cell.tbc{background:#2c2e2305;border:1px dashed rgba(44,46,35,.18);align-items:center;justify-content:center;color:#bbb;font-size:11px;font-weight:700;letter-spacing:.5px;text-transform:uppercase}.sched-cell.not-req{background:#dc323208;border:1px dashed rgba(220,50,50,.2);align-items:center;justify-content:center;padding:8px}.sched-cell.day-release{background:#9abf070f;border:1px solid rgba(154,191,7,.2);padding:9px}.sched-date{font-size:12px;font-weight:800;color:#2c2e23}.sched-detail{font-size:10px;color:#666;display:flex;align-items:center;gap:4px}.sched-detail i{font-size:9px;color:#999}.filter-strip{display:flex;gap:16px;align-items:flex-end;padding:16px 0;margin-bottom:18px;border-top:1px solid rgba(44,46,35,.06);border-bottom:1px solid rgba(44,46,35,.06)}.autosave-chip{display:inline-flex;align-items:center;gap:5px;font-size:10px;font-weight:700;color:#2a9a62;letter-spacing:.3px}.pulse-dot-green{width:6px;height:6px;border-radius:50%;background:#42cd86;animation:pulse 2s infinite;flex-shrink:0}.tick-all-btn{font-size:9px;font-weight:800;padding:3px 9px;border:1px solid rgba(0,66,128,.25);border-radius:10px;background:#0042800d;color:#004280;cursor:pointer;font-family:Montserrat,sans-serif;text-transform:uppercase;letter-spacing:.3px;transition:all .15s;display:block;margin-top:4px;white-space:nowrap}.tick-all-btn:hover{background:#004280;color:#fff;border-color:#004280}.attend-cell{width:28px;height:28px;border:1.5px solid rgba(44,46,35,.3);border-radius:7px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .15s;background:#fff;font-size:13px;color:transparent}.attend-cell:hover{border-color:#004280}.attend-cell.checked{background:#004280;border-color:#004280;color:#fff}.attend-cell.na{background:#dc32320d;border-color:#dc323240;color:#dc323266}.delegate-name{font-weight:700;font-size:13px}.delegate-sub{font-size:10px;color:#888;margin-top:1px}.new-module-flag{display:inline-flex;align-items:center;gap:4px;background:#dc323214;color:#b81e1e;border:1px solid rgba(220,50,50,.2);font-size:9px;font-weight:800;padding:2px 7px;border-radius:8px;letter-spacing:.3px;text-transform:uppercase;margin-top:3px;display:block;width:fit-content}.result-btn{height:28px;min-width:54px;padding:0 10px;border-radius:18px;font-size:10px;font-weight:800;border:1.5px solid;cursor:pointer;font-family:Montserrat,sans-serif;text-transform:uppercase;letter-spacing:.3px;transition:all .15s}.result-btn.pass{border-color:#42cd8699;color:#2a9a62;background:#42cd8612}.result-btn.pass:hover,.result-btn.pass.sel{background:#42cd86;border-color:#42cd86;color:#fff}.result-btn.fail{border-color:#dc323266;color:#c01818;background:#dc32320d}.result-btn.fail:hover,.result-btn.fail.sel{background:#d11e1e;border-color:#d11e1e;color:#fff}.result-btn.na{border-color:#2c2e2333;color:#888;background:#2c2e230a}.result-btn.na:hover,.result-btn.na.sel{background:#888;border-color:#888;color:#fff}.xpedeon-badge{display:inline-flex;align-items:center;gap:6px;background:#9abf0717;border:1px solid rgba(154,191,7,.3);color:#6a8506;font-size:10px;font-weight:800;padding:5px 12px;border-radius:18px;letter-spacing:.3px}.tpl-icon{width:38px;height:38px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0}.tpl-icon-prog{background:#a22c8c1a;color:#a22c8c}.tpl-icon-course{background:#00428014;color:#004280}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-end{justify-content:flex-end}.gap-2{gap:8px}.gap-3{gap:12px}.gap-4{gap:16px}.mt-2{margin-top:8px}.mt-3{margin-top:12px}.mt-4{margin-top:16px}.mb-3{margin-bottom:12px}.mb-4{margin-bottom:16px}.ml-auto{margin-left:auto}.w-full{width:100%}.text-xs{font-size:11px}.text-sm{font-size:12px}.font-bold{font-weight:700}.text-muted{color:#888}.text-blue{color:#004280}.text-purple{color:#a22c8c}.text-green{color:#2a9a62}.text-danger{color:#d11e1e}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:20px}.grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}.hint-box{display:flex;gap:9px;align-items:flex-start;padding:11px 14px;border-radius:8px;font-size:11px;font-weight:500;line-height:1.55}.hint-box-blue{background:#0042800d;border:1px solid rgba(0,66,128,.12);color:#004280}.hint-box-green{background:#9abf0712;border:1px solid rgba(154,191,7,.2);color:#5a7a05}.hint-box-amber{background:#e68c000f;border:1px solid rgba(230,140,0,.2);color:#9a6000}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.scene-enter{animation:fadeIn .2s ease}
