/* CCD Manager — compact dark professional interface */
:root{
  color-scheme:dark;
  --ink:#e7edf5;--muted:#91a0b4;--muted-2:#718198;--line:#2b394b;
  --navy:#111c2b;--navy-2:#172638;--surface:#1b2a3d;--surface-2:#223349;
  --canvas:#101925;--accent:#c58b4b;--accent-2:#e0aa68;--blue:#6f9bd0;
  --success:#55ad91;--danger:#d97878;--shadow:0 8px 24px rgba(0,0,0,.18)
}
*{box-sizing:border-box}
html{min-height:100%;background:var(--canvas)}
body{font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink);background:var(--canvas);min-height:100vh;font-size:14px;line-height:1.45}
a{color:#9bbce3}a:hover{color:#c6dcf5}
.app-shell{display:flex;flex-direction:column}
.app-navbar{min-height:60px;background:#111b29;border-bottom:1px solid #29384a;box-shadow:0 3px 16px rgba(0,0,0,.2);padding:7px 0}
.app-navbar .container-fluid{gap:12px}
.navbar-brand{text-decoration:none;color:var(--ink);margin:0;min-width:max-content}
.brand-symbol{width:35px;height:35px;display:grid;place-items:center;background:linear-gradient(145deg,#bd8548,#80582f);color:#fff;border:1px solid rgba(255,255,255,.15);border-radius:8px;font-size:10px;font-weight:850;letter-spacing:.06em}
.brand-name{font-size:16px;font-weight:800;letter-spacing:-.45px;color:#edf2f8}.brand-name span{font-weight:500;color:#9aa9bb}
.app-nav-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;min-width:0}
.app-navbar .nav-link{color:#b7c4d4;padding:7px 9px;border-radius:6px}.app-navbar .nav-link:hover{background:#223247;color:#fff}
.app-navbar .form-select{background-color:#1b2a3d;color:#dce5ef;border-color:#3a4a5e;font-size:12px;min-height:32px;padding-top:4px;padding-bottom:4px}
.user-chip{display:flex;align-items:center;gap:8px;color:#c1ccda;font-size:12px;font-weight:600;white-space:nowrap}
.user-avatar{width:30px;height:30px;display:grid;place-items:center;border-radius:50%;background:#34475e;color:#e8c18e;font-weight:800}
.btn-logout{border:1px solid #405067;color:#c3cedb;background:#1a293b;border-radius:7px;padding:6px 10px;font-size:12px;font-weight:650;display:flex;gap:8px;align-items:center;white-space:nowrap}
.btn-logout:hover{background:#2a3b50;border-color:#657991;color:#fff}
.app-main{width:100%;max-width:1480px;margin:0 auto;flex:1;padding-top:20px!important;padding-bottom:22px!important}
.app-footer{max-width:1480px;width:100%;margin:18px auto 0;padding-top:11px!important;padding-bottom:13px!important;border-top:1px solid var(--line);display:flex;justify-content:space-between;color:#718198;font-size:10px;letter-spacing:.02em}
/* Dashboard */
.welcome-panel{position:relative;overflow:hidden;min-height:145px;border:1px solid #34465c;border-radius:11px;padding:23px 27px;background:linear-gradient(112deg,#1a2a3d 0%,#213a55 68%,#304c68 100%);color:#fff;display:flex;align-items:center;justify-content:space-between;box-shadow:var(--shadow)}
.welcome-copy{position:relative;z-index:2;max-width:650px}.eyebrow{font-size:9px;font-weight:800;letter-spacing:1.45px;color:#c69a67;text-transform:uppercase}
.welcome-panel h1{font-size:clamp(22px,2.4vw,29px);font-weight:750;letter-spacing:-.7px;margin:7px 0 5px;color:#f2f5f9}
.welcome-panel p{color:#b9c7d7;margin:0;font-size:12px;max-width:560px;line-height:1.55}
.welcome-art{width:190px;height:130px;position:absolute;right:6%;top:8px;opacity:.6}.art-ring{position:absolute;border:1px solid rgba(210,225,240,.18);border-radius:50%;width:140px;height:140px;right:0;top:0}.ring-two{width:105px;height:105px;right:18px;top:18px;border-color:rgba(210,225,240,.26)}
.art-document{position:absolute;width:62px;height:82px;right:58px;top:26px;background:rgba(220,232,244,.1);border:1px solid rgba(220,232,244,.32);border-radius:6px;transform:rotate(8deg);padding:15px 9px}.art-document span{display:block;height:3px;background:rgba(220,232,244,.55);border-radius:5px;margin-bottom:7px}.art-document span:nth-child(2){width:75%}.art-document span:nth-child(3){width:55%}.art-document b{display:block;margin-top:7px;font-size:10px;color:#fff;letter-spacing:2px}
.section-heading{display:flex;align-items:end;justify-content:space-between;margin:21px 0 10px}.section-heading h2{font-size:17px;font-weight:750;letter-spacing:-.35px;margin:3px 0 0;color:#e6edf5}.section-heading p{font-size:11px;color:var(--muted);margin:4px 0 0}.version-tag{font-size:9px;font-weight:750;letter-spacing:.8px;color:#c0cad6;background:#29394d;border:1px solid #3a4b60;border-radius:5px;padding:5px 8px}
.stat-card{height:100%;min-height:100px;background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:13px 15px;box-shadow:0 3px 10px rgba(0,0,0,.1);transition:border-color .15s,transform .15s}.stat-card:hover,.module-card:hover{transform:translateY(-2px);border-color:#52677f;box-shadow:var(--shadow)}
.stat-top{display:flex;justify-content:space-between;align-items:center;color:#aab8c9;font-size:11px;font-weight:600}.stat-icon,.module-icon{width:32px;height:32px;display:grid;place-items:center;border-radius:7px;font-size:14px}.blue{background:#263d58;color:#91b7e5}.violet{background:#38344f;color:#b4a7df}.teal{background:#24453f;color:#83c8b4}.amber{background:#4a3a2b;color:#e2b77d}
.stat-value{font-size:25px;font-weight:800;letter-spacing:-.8px;margin-top:4px;color:#f0f4f8}.stat-hint{font-size:10px;color:var(--muted-2);margin-top:1px}
.module-card{height:100%;min-height:165px;padding:15px;background:var(--surface);border:1px solid var(--line);border-radius:9px;display:flex;flex-direction:column;transition:transform .15s,border-color .15s,box-shadow .15s}.module-card-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.module-icon{width:35px;height:35px;font-size:15px}.module-number{font-size:10px;font-weight:700;color:#8e9eb2;letter-spacing:.8px}.module-card h3{font-size:13px;font-weight:750;margin:0 0 5px;color:#e5edf6}.module-card p{font-size:11px;line-height:1.5;color:#9baabd;margin:0 0 12px;flex:1}.module-card-bottom{display:flex;justify-content:space-between;align-items:center;border-top:1px solid #2b3a4d;padding-top:9px}.coming-soon{display:flex;align-items:center;gap:6px;font-size:9px;color:#96a4b5;font-weight:600}.coming-soon i{width:5px;height:5px;background:#c99556;border-radius:50%}.module-arrow{font-size:15px;color:#8da0b6}
/* Bootstrap component skin */
.card,.modal-content{background:var(--surface);color:var(--ink);border:1px solid var(--line)!important;border-radius:9px;box-shadow:0 4px 14px rgba(0,0,0,.12)}
.card-header,.card-footer{background:#19283a!important;color:#aebdd0;border-color:var(--line)!important}.card-body{color:var(--ink)}
.table{--bs-table-color:#dce5ef;--bs-table-bg:transparent;--bs-table-border-color:#2b3a4d;--bs-table-striped-bg:#203147;--bs-table-hover-bg:#26394f;--bs-table-hover-color:#fff;margin-bottom:0;font-size:12px}
.table>thead{--bs-table-bg:#223349;--bs-table-color:#aebdd0}.table>thead th{font-size:10px;text-transform:uppercase;letter-spacing:.55px;font-weight:750;border-bottom:1px solid #3a4c62;white-space:nowrap;padding:10px 12px}.table>tbody td{padding:10px 12px;vertical-align:middle}.table-responsive{border-radius:0 0 8px 8px}
.text-secondary{color:#98a8bb!important}.text-muted{color:#8798ad!important}.bg-white,.bg-light,.table-light{background-color:#223349!important;color:#dce5ef!important}.alert{background:#25364a;color:#dce5ef;border:1px solid #3a4e66;border-radius:8px;font-size:12px;padding:10px 13px}.alert-light{background:#1c2c3f!important;color:#b9c7d7!important;border-color:#35475d!important}.alert-success{background:#1e4039;color:#b6e0d1;border-color:#326e5d}.alert-danger{background:#482d34;color:#f0c0c3;border-color:#79434b}
.form-control,.form-select{background:#142235;color:#e0e8f1;border:1px solid #3b4d63;border-radius:6px;font-size:12px;min-height:36px}.form-control::placeholder{color:#75869c}.form-control:focus,.form-select:focus{background:#17283d;color:#fff;border-color:#8a9fb8;box-shadow:0 0 0 .18rem rgba(111,155,208,.16)}.form-control:disabled,.form-select:disabled{background:#1c2a3b;color:#7e8da1}
.form-label{font-size:11px;font-weight:700;color:#b8c5d4;margin-bottom:5px}.form-text{color:#8192a8;font-size:10px}.form-check-input{background-color:#142235;border-color:#50627a}.form-check-input:checked{background-color:#b98245;border-color:#b98245}
.btn{border-radius:6px;font-size:12px;font-weight:650;padding:7px 11px}.btn-primary{--bs-btn-bg:#a8733d;--bs-btn-border-color:#a8733d;--bs-btn-hover-bg:#bd874e;--bs-btn-hover-border-color:#bd874e;--bs-btn-active-bg:#8d6034;--bs-btn-active-border-color:#8d6034;--bs-btn-color:#fff}.btn-outline-primary{--bs-btn-color:#a9c6e8;--bs-btn-border-color:#58789d;--bs-btn-hover-bg:#2b4561;--bs-btn-hover-border-color:#7797bb;--bs-btn-hover-color:#fff}.btn-outline-secondary{--bs-btn-color:#b5c1d0;--bs-btn-border-color:#53647a;--bs-btn-hover-bg:#34475e;--bs-btn-hover-border-color:#71859d;--bs-btn-hover-color:#fff}.btn-light{--bs-btn-bg:#2a3b50;--bs-btn-border-color:#40546c;--bs-btn-color:#d3deea;--bs-btn-hover-bg:#354a63;--bs-btn-hover-color:#fff}
.badge{font-size:9px;font-weight:700;letter-spacing:.1px;padding:5px 7px;border-radius:5px}.text-bg-light{background:#2b3d52!important;color:#c8d5e3!important}.text-bg-success{background:#285344!important;color:#bde4d4!important}.text-bg-danger{background:#63363d!important;color:#f2c4c7!important}.text-bg-warning{background:#634a2d!important;color:#f0d3a9!important}
.border{border-color:var(--line)!important}.shadow-sm{box-shadow:0 4px 14px rgba(0,0,0,.12)!important}.list-group-item{background:var(--surface);color:var(--ink);border-color:var(--line)}
hr{border-color:var(--line);opacity:1}
/* Login and guest pages */
.login-card{width:100%;max-width:420px;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:25px;box-shadow:var(--shadow)}.brand-mark{width:54px;height:54px;border-radius:12px;display:grid;place-items:center;background:linear-gradient(145deg,#bd8548,#80582f);color:#fff;font-weight:850;letter-spacing:.04em}
/* Mobile-first adjustments */
@media(max-width:767.98px){
 .app-navbar{padding:7px 0}.app-navbar .container-fluid{padding-left:12px;padding-right:12px;flex-wrap:wrap}.brand-symbol{width:32px;height:32px}.brand-name{font-size:15px}
 .app-nav-actions{gap:6px;flex:1}.app-nav-actions .nav-link{font-size:11px;padding:6px}.user-name{display:none}.user-chip{gap:0}.user-avatar{width:28px;height:28px}.btn-logout{padding:6px 8px}.logout-label{display:none}
 .app-main{padding:14px 12px 18px!important}.welcome-panel{min-height:125px;padding:19px 17px;border-radius:9px}.welcome-panel h1{font-size:22px}.welcome-panel p{font-size:11px;max-width:75%}.welcome-art{right:-85px;opacity:.3}
 .section-heading{margin:17px 0 9px}.section-heading h2{font-size:15px}.stat-card{min-height:86px;padding:10px 11px}.stat-value{font-size:22px}.stat-icon{width:28px;height:28px}
 .module-card{min-height:145px;padding:13px}.row.g-3{--bs-gutter-x:.6rem;--bs-gutter-y:.6rem}.app-footer{margin-top:12px;padding-left:12px!important;padding-right:12px!important}
 .card-body{padding:12px}.table{font-size:11px;min-width:620px}.table>thead th,.table>tbody td{padding:9px 10px}.form-control,.form-select{min-height:38px}.btn{min-height:34px}
 .d-flex.flex-wrap.justify-content-between.align-items-center.gap-3.mb-4{gap:10px!important}.d-flex.flex-wrap.justify-content-between.align-items-center.gap-3.mb-4 h1{font-size:20px}
}
@media(max-width:390px){.brand-name{font-size:14px}.app-nav-actions{gap:4px}.app-navbar .form-select{max-width:66px;padding-left:5px;padding-right:18px}.app-navbar .nav-link{font-size:10px}.welcome-panel p{max-width:90%}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;scroll-behavior:auto!important}}

/* Event and class administration */
.page-heading h1{font-size:clamp(1.45rem,2.4vw,1.9rem);font-weight:750;letter-spacing:-.035em;margin:.25rem 0 .35rem;color:var(--text-primary,#e8edf5)}
.page-heading .back-link{font-size:.82rem;color:var(--text-muted,#9ba9bc);text-decoration:none}
.page-heading .back-link:hover{color:var(--accent,#d6a45e)}
.app-card{background:var(--surface,#172435);border:1px solid var(--border,#2b3a4d);border-radius:12px;box-shadow:0 8px 24px rgba(0,0,0,.12);color:var(--text-primary,#e8edf5);overflow:hidden}
.app-card>.card-header{background:rgba(255,255,255,.025);border-bottom:1px solid var(--border,#2b3a4d);padding:.8rem 1rem;color:var(--text-primary,#e8edf5)}
.app-card .card-body{padding:1rem}
.app-card .table{--bs-table-bg:transparent;--bs-table-color:var(--text-primary,#e8edf5);--bs-table-border-color:var(--border,#2b3a4d);--bs-table-hover-bg:rgba(255,255,255,.035);--bs-table-hover-color:var(--text-primary,#e8edf5);font-size:.86rem}
.app-card .table thead th{font-size:.7rem;text-transform:uppercase;letter-spacing:.055em;color:var(--text-muted,#9ba9bc);font-weight:700;border-bottom-width:1px;white-space:nowrap}
.app-card .form-label{font-size:.8rem;font-weight:650;color:var(--text-primary,#e8edf5);margin-bottom:.35rem}
.app-card .form-control,.app-card .form-select{background:#101b29;border-color:#35465c;color:#e8edf5;font-size:.88rem}
.app-card .form-control:focus,.app-card .form-select:focus{border-color:#b88a50;box-shadow:0 0 0 .18rem rgba(184,138,80,.18)}
.app-card .form-control::placeholder{color:#8190a4}
.choice-card{display:flex;align-items:flex-start;gap:.65rem;height:100%;padding:.85rem;border:1px solid var(--border,#34465b);border-radius:9px;background:rgba(255,255,255,.025);cursor:pointer}
.choice-card:has(input:checked){border-color:#a87942;background:rgba(168,121,66,.1)}
.choice-card input{margin-top:.25rem;accent-color:#c18b4d}
.choice-card span{display:grid;gap:.25rem}.choice-card strong{font-size:.84rem}.choice-card small{font-size:.75rem;line-height:1.4;color:var(--text-muted,#9ba9bc)}
.count-pill{display:inline-flex;min-width:1.7rem;height:1.7rem;align-items:center;justify-content:center;padding:0 .45rem;border-radius:99px;background:#293b50;color:#dce5ef;font-size:.76rem;font-weight:700}
.status-pill{display:inline-flex;padding:.25rem .55rem;border-radius:5px;font-size:.7rem;font-weight:700;letter-spacing:.015em;background:#344256;color:#dce5ef}
.status-active{background:#173f37;color:#8ce0c4}.status-draft{background:#3c3c42;color:#d3d4dc}.status-closed{background:#493b2d;color:#e7bd83}.status-archived{background:#303846;color:#aab6c5}
.class-row{padding:.85rem 0;border-bottom:1px solid var(--border,#2b3a4d)}.class-row:first-child{padding-top:0}.class-row:last-child{border-bottom:0}.class-meta{font-size:.72rem!important;padding-left:.1rem}
.subsection-title{font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;font-weight:750;color:var(--text-muted,#9ba9bc);margin-bottom:.7rem}
.sticky-side{position:sticky;top:1rem}.filter-bar .form-control{background:#101b29;border-color:#35465c;color:#e8edf5}.filter-bar .form-control::placeholder{color:#8190a4}
@media(max-width:767.98px){.page-heading{align-items:flex-start!important}.page-heading .btn{width:100%}.app-card .card-body{padding:.8rem}.class-row{padding:1rem 0}.class-row .row>div{min-width:0}.sticky-side{position:static}.app-nav-actions .nav-link{display:none}.app-card .table{min-width:690px}}

/* Event composition: compact desktop tables, stacked mobile assignment rows. */
.composition-class .card-header { background: rgba(255,255,255,.025); }
.composition-class .table { --bs-table-bg: transparent; --bs-table-color: var(--app-text, #dbe4ef); --bs-table-border-color: rgba(148,163,184,.14); }
.composition-class .table thead th { color: var(--app-muted, #93a4b8); font-size: .68rem; font-weight: 700; letter-spacing: .07em; text-transform: uppercase; white-space: nowrap; }
.role-tag { display: inline-flex; align-items: center; border: 1px solid rgba(148,163,184,.22); border-radius: 5px; padding: .2rem .45rem; background: rgba(148,163,184,.07); font-size: .78rem; white-space: nowrap; }
.requirement-form { border: 1px solid rgba(148,163,184,.16); border-radius: 9px; padding: .8rem; background: rgba(15,23,42,.18); }
.requirement-row { display: grid; grid-template-columns: minmax(0,1fr) 2.2rem 4.2rem; align-items: center; gap: .5rem; padding: .38rem 0; border-bottom: 1px solid rgba(148,163,184,.10); font-size: .82rem; }
.requirement-row:last-of-type { border-bottom: 0; }
.requirement-current { color: var(--app-muted, #93a4b8); text-align: right; font-variant-numeric: tabular-nums; }
.requirement-row .form-control { text-align: center; font-variant-numeric: tabular-nums; }
.composition-add-form { border: 1px solid rgba(148,163,184,.15); border-radius: 9px; padding: .8rem; background: rgba(15,23,42,.14); }
@media (max-width: 767.98px) {
  .composition-class .card-header { align-items: flex-start !important; }
  .composition-class .table thead { display: none; }
  .composition-class .table tbody tr { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: .2rem .5rem; padding: .55rem 0; border-bottom: 1px solid rgba(148,163,184,.12); }
  .composition-class .table tbody td { display: block; border: 0; padding: .12rem .25rem; }
  .composition-class .table tbody td:first-child { grid-column: 1 / -1; }
  .composition-class .table tbody td:nth-child(2) { grid-column: 1; }
  .composition-class .table tbody td:last-child { grid-column: 2; grid-row: 2; }
  .composition-class .table tbody td:last-child .btn { min-height: 34px; }
  .requirement-row { grid-template-columns: minmax(0,1fr) 1.8rem 3.8rem; }
}

.requirement-row.is-missing { border: 1px solid rgba(239,68,68,.55); border-radius: 7px; padding: .5rem; background: rgba(127,29,29,.16); }
.requirement-row.is-missing label, .requirement-row.is-missing .requirement-current, .requirement-missing { color: #fca5a5; }
.requirement-missing { grid-column: 1 / -1; font-weight: 700; text-align: right; }

/* Composition management: one class per workspace, clear progress and stable return position. */
.composition-editor-anchor { scroll-margin-top: 1.25rem; }
.composition-class-select-form { width:100%; max-width:760px; }
.composition-class-select { min-height:46px; padding:.65rem 2.5rem .65rem .85rem; border:1px solid rgba(148,163,184,.32); border-radius:9px; background-color:var(--app-panel,#172334); color:var(--app-text,#dbe4ef); font-weight:650; }
.composition-class-select:focus { border-color:#b88a50; box-shadow:0 0 0 .2rem rgba(184,138,80,.16); }
.composition-class-select option { background:#172334; color:#dbe4ef; }
.composition-tab-status { font-size:.69rem; font-weight:700; }
.composition-tab-status.is-pending,.composition-state.is-pending { color:#fca5a5; }
.composition-tab-status.is-complete,.composition-state.is-complete { color:#86d9bd; }
.composition-tab-status.is-unconfigured,.composition-state.is-unconfigured { color:#f4ca83; }
.composition-state.is-not-required { color:var(--app-muted,#93a4b8); }
.composition-requirements-form { border:1px solid rgba(148,163,184,.18); border-radius:10px; padding:1rem; background:rgba(15,23,42,.13); }
.composition-requirements-table { min-width:610px !important; }
.composition-requirements-table thead th { padding:.65rem .8rem; }
.composition-requirements-table tbody td { padding:.52rem .8rem; }
.composition-requirements-table tbody tr { border-bottom:1px solid rgba(148,163,184,.10); }
.composition-requirements-table tbody tr:last-child { border-bottom:0; }
.composition-requirements-table tbody tr.is-missing { background:rgba(127,29,29,.18); box-shadow:inset 3px 0 0 #ef4444; }
.composition-requirements-table tbody tr.is-missing td:first-child strong,
.composition-requirements-table tbody tr.is-missing td:last-child { color:#fca5a5; }
.composition-requirements-table tbody tr.is-not-required td:last-child { color:var(--app-muted,#93a4b8); }
.composition-count-input { width:5.2rem; margin:0 auto; text-align:center; font-weight:750; font-variant-numeric:tabular-nums; }
.composition-assigned-count { display:inline-flex; align-items:center; justify-content:center; min-width:2rem; min-height:2rem; padding:0 .55rem; border-radius:7px; background:rgba(148,163,184,.12); font-weight:800; font-variant-numeric:tabular-nums; }
.composition-requirements-table .is-missing .composition-assigned-count { color:#fecaca; background:rgba(239,68,68,.16); }
.composition-state { display:inline-flex; align-items:center; font-size:.76rem; font-weight:750; white-space:nowrap; }
.composition-section-divider { height:1px; margin:1.35rem 0; background:rgba(148,163,184,.16); }
.composition-empty-state { padding:1rem; border:1px dashed rgba(148,163,184,.25); border-radius:8px; color:var(--app-muted,#93a4b8); font-size:.85rem; }
.composition-add-form { padding:1rem; }
@media(max-width:767.98px) {
  .composition-requirements-form { padding:.65rem; }
  .composition-requirements-table { min-width:570px !important; }
  .composition-requirements-table tbody td { padding:.45rem .55rem; }
}

/* Collapsible expected composition */
.composition-requirements-heading { padding:.35rem 0; }
.composition-requirements-toggle { white-space:nowrap; }
.composition-requirements-toggle .when-collapsed { display:none; }
.composition-requirements-toggle[aria-expanded="false"] .when-collapsed { display:inline; }
.composition-requirements-toggle[aria-expanded="false"] .when-expanded { display:none; }
