/* GCUC SIS – flat theme. Navy + one muted gold accent, hairline borders, no shadows, one small radius. */
:root{
 --navy:#0f2747; --navy-2:#17407a; --gold:#b8923a;
 --bg:#f5f6f8; --surface:#fff; --line:#e3e6eb; --line-2:#eef0f3;
 --ink:#1b2430; --muted:#667085; --r:6px;
 --ok:#1f7a4d; --ok-bg:#e7f4ed; --bad:#b42318; --bad-bg:#fcebe9; --warn:#8a5a0b; --warn-bg:#fbf1dc;
 --bs-primary:#17407a; --bs-primary-rgb:23,64,122; --bs-link-color:#17407a; --bs-link-hover-color:#0f2747;
 --bs-success:#1f7a4d; --bs-danger:#b42318; --bs-warning:#b7791f;
 --bs-body-bg:#f5f6f8; --bs-body-color:#1b2430; --bs-secondary-color:#667085; --bs-border-color:#e3e6eb;
 --bs-body-font-family:'IBM Plex Sans','Segoe UI',system-ui,sans-serif; --bs-body-font-size:.9375rem;
 --bs-border-radius:6px; --bs-border-radius-sm:4px; --bs-border-radius-lg:8px;
 --serif:'Source Serif 4','Georgia','Times New Roman',serif;
}
body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased}
.text-muted{color:var(--muted)!important}
h1,h2,h3,h4{font-family:var(--serif);font-weight:600;letter-spacing:-.01em;color:var(--navy)}
h5,h6{font-weight:600;color:var(--ink)}
.fw-bold{font-weight:600!important}
a{text-decoration-thickness:1px;text-underline-offset:2px}
:focus-visible{outline:2px solid var(--navy-2);outline-offset:2px}

/* sidebar */
.sidebar{position:fixed;inset:0 auto 0 0;width:264px;background:var(--navy);color:#fff;display:flex;flex-direction:column;z-index:100}
.brand{display:flex;align-items:center;gap:.8rem;padding:1.4rem 1.25rem 1.25rem;border-bottom:1px solid rgba(255,255,255,.1)}
.logo{width:48px;height:48px;border-radius:50%;object-fit:cover;background:#fff;flex:none}
.brand-name{font-family:var(--serif);font-weight:600;font-size:1.02rem;line-height:1.2;color:#fff}
.brand-dept{display:inline-block;margin-top:.15rem;font-family:var(--sans,inherit);font-size:.8rem;font-weight:500;color:var(--gold)}
.brand-sub{font-size:.75rem;color:#9fb0cb;margin-top:.2rem}
.sidebar nav{padding:1rem .75rem}
.sidebar .nav-link{color:#b9c6dc;padding:.62rem .85rem;border-radius:var(--r);margin-bottom:.1rem;font-weight:500;display:flex;align-items:center;position:relative}
.sidebar .nav-link i{font-size:1.05rem;margin-right:.85rem!important;opacity:.85}
.sidebar .nav-link:hover{background:rgba(255,255,255,.06);color:#fff}
.sidebar .nav-link.active{background:rgba(255,255,255,.09);color:#fff}
.sidebar .nav-link.active::before{content:"";position:absolute;left:-.75rem;top:.4rem;bottom:.4rem;width:3px;background:var(--gold);border-radius:0 2px 2px 0}
.sidebar .logout{margin-top:auto;padding:.75rem;border-top:1px solid rgba(255,255,255,.1)}

/* top bar + layout */
.main{margin-left:264px;min-height:100vh}
.topbar{background:var(--surface);padding:.7rem 1.75rem;display:flex;align-items:center;border-bottom:1px solid var(--line)}
.avatar{width:38px;height:38px;border-radius:50%;background:var(--navy);color:#fff;display:grid;place-items:center;font-weight:600;font-size:.9rem}
.topbar small{font-size:.78rem}

/* surfaces */
.card{background:var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:none}
.shadow,.shadow-sm,.shadow-lg{box-shadow:none!important;border:1px solid var(--line)}
.hero{background:var(--navy);color:#fff;border-radius:8px;padding:1.75rem 2rem;border-bottom:3px solid var(--gold)}
.hero h2{font-family:var(--serif);color:#fff;font-weight:600;margin-bottom:.35rem}
.hero p{color:#b9c6dc}
.hero{overflow:hidden}
.hero-text{flex:1 1 auto;min-width:0}
.hero-text h2,.hero-text p{overflow-wrap:anywhere}
.hero-logo{width:clamp(44px,9vw,120px);height:clamp(44px,9vw,120px);max-width:25%;object-fit:contain;flex:0 0 auto;align-self:center}
@media(max-width:575px){.hero{padding:1.25rem 1.1rem}.hero h2{font-size:1.4rem}}
.stat{padding:1.15rem 1.25rem}
.stat-n{font-family:var(--serif);font-size:2rem;font-weight:600;line-height:1.1;color:var(--navy)}
.stat-l{color:var(--muted);font-size:.85rem;margin-top:.3rem}
.stat-i{font-size:1.35rem;color:var(--navy-2);opacity:.55}

/* forms */
.form-control,.form-select{border:1px solid #d0d5dd;border-radius:var(--r);padding:.5rem .75rem;background-color:#fff;box-shadow:none;color:var(--ink)}
.form-control::placeholder{color:#98a2b3}
.form-control:focus,.form-select:focus{border-color:var(--navy-2);box-shadow:0 0 0 3px rgba(23,64,122,.14)}
.form-control:disabled,.form-control[readonly],.bg-light{background-color:#f3f4f6!important}
.form-label{font-weight:500;margin-bottom:.3rem}
.form-label.small,.small.text-muted.form-label{font-size:.8rem}
.form-check-input:checked{background-color:var(--navy-2);border-color:var(--navy-2)}
.form-check-input:disabled{opacity:.35;cursor:not-allowed}
.form-text{color:var(--muted)}

/* buttons */
.btn{border-radius:var(--r);font-weight:500;padding:.45rem .95rem;box-shadow:none!important;transition:background-color .12s,border-color .12s,color .12s}
.btn-sm{padding:.3rem .6rem;font-size:.82rem}
.btn-primary{--bs-btn-bg:#17407a;--bs-btn-border-color:#17407a;--bs-btn-hover-bg:#0f2747;--bs-btn-hover-border-color:#0f2747;--bs-btn-active-bg:#0b1d36;--bs-btn-active-border-color:#0b1d36;--bs-btn-disabled-bg:#17407a;--bs-btn-disabled-border-color:#17407a}
.btn-outline-primary{--bs-btn-color:#17407a;--bs-btn-border-color:#c5d1e4;--bs-btn-hover-bg:#17407a;--bs-btn-hover-border-color:#17407a;--bs-btn-active-bg:#0f2747;--bs-btn-active-border-color:#0f2747}
.btn-outline-danger{--bs-btn-color:#b42318;--bs-btn-border-color:#efc9c5;--bs-btn-hover-bg:#b42318;--bs-btn-hover-border-color:#b42318;--bs-btn-active-bg:#8e1c12;--bs-btn-active-border-color:#8e1c12}
.btn-outline-success{--bs-btn-color:#1f7a4d;--bs-btn-border-color:#bfe0cd;--bs-btn-hover-bg:#1f7a4d;--bs-btn-hover-border-color:#1f7a4d}
.btn-outline-secondary{--bs-btn-color:#475467;--bs-btn-border-color:#d0d5dd;--bs-btn-hover-bg:#f3f4f6;--bs-btn-hover-color:#1b2430;--bs-btn-hover-border-color:#c3c9d3}
.btn-light{--bs-btn-bg:#fff;--bs-btn-border-color:#d0d5dd;--bs-btn-hover-bg:#f3f4f6;--bs-btn-hover-border-color:#c3c9d3}
.btn-close{box-shadow:none!important}

/* tables */
.table{--bs-table-bg:transparent;--bs-table-border-color:var(--line-2);margin-bottom:0;font-variant-numeric:tabular-nums}
.table>thead>tr>th{font-size:.8rem;font-weight:600;color:var(--muted);border-bottom:1px solid var(--line);background:transparent;padding:.7rem .75rem;white-space:nowrap}
.table>tbody>tr>td{padding:.7rem .75rem;border-bottom:1px solid var(--line-2)}
.table>tbody>tr:last-child>td{border-bottom:0}
.table>tbody>tr:hover>td{background:#fafbfc}
.table-sm>thead>tr>th,.table-sm>tbody>tr>td{padding:.45rem .6rem}
.table-light,.table-light>*{--bs-table-bg:#f7f8fa}
.locked-row>td{background:#fdf4f3!important;color:#6b7280}

/* badges + alerts: tinted, flat */
.badge{font-weight:500;font-size:.78rem;border-radius:4px;padding:.32em .6em;letter-spacing:0}
.badge.bg-primary{background:#e8eef8!important;color:#17407a!important}
.badge.bg-success{background:var(--ok-bg)!important;color:var(--ok)!important}
.badge.bg-danger{background:var(--bad-bg)!important;color:var(--bad)!important}
.badge.bg-warning{background:var(--warn-bg)!important;color:var(--warn)!important}
.badge.bg-secondary,.badge.bg-light{background:#eceef2!important;color:#475467!important}
.badge.bg-info{background:#e3f1f6!important;color:#0f5a73!important}
.alert{border-radius:var(--r);border-width:1px;box-shadow:none}
.alert-info{--bs-alert-bg:#eef3fa;--bs-alert-border-color:#d3dff0;--bs-alert-color:#17407a}
.alert-success{--bs-alert-bg:var(--ok-bg);--bs-alert-border-color:#c3e3d1;--bs-alert-color:var(--ok)}
.alert-danger{--bs-alert-bg:var(--bad-bg);--bs-alert-border-color:#f1cdc9;--bs-alert-color:var(--bad)}
.alert-warning{--bs-alert-bg:var(--warn-bg);--bs-alert-border-color:#efdcae;--bs-alert-color:var(--warn)}
.alert-light{--bs-alert-bg:#f7f8fa;--bs-alert-border-color:var(--line);--bs-alert-color:var(--ink)}

/* modals, lists */
.modal-content{border:1px solid var(--line);border-radius:8px;box-shadow:none}
.modal-backdrop{--bs-backdrop-opacity:.45}
.modal-header{border-bottom:1px solid var(--line);padding:1rem 1.25rem}
.modal-footer{border-top:1px solid var(--line);padding:.85rem 1.25rem}
.modal-body{padding:1.25rem}
.modal-title{font-family:var(--serif);font-weight:600;color:var(--navy)}
.list-group-item{border-color:var(--line)}
.list-group-item-action:hover{background:#f5f7fb}

/* student form: step bar */
.sf-nav{border-bottom:1px solid var(--line);gap:0!important;margin-bottom:1.1rem!important}
.sf-nav .btn{border:0;border-bottom:2px solid transparent;border-radius:0;background:transparent;color:var(--muted);padding:.6rem 1rem;margin-bottom:-1px;font-weight:500}
.sf-nav .btn:hover{color:var(--ink);background:transparent}
.sf-nav .btn.done{color:var(--ok);border-bottom-color:transparent;background:transparent}
.sf-nav .btn.active{color:var(--navy);border-bottom-color:var(--navy);background:transparent;font-weight:600}
.sf-pager{border-top:1px solid var(--line)!important}
.student-form h6.text-primary{color:var(--navy)!important}
.student-form h6.border-bottom{border-bottom-color:var(--line)!important}

/* login */
.login-bg{min-height:100vh;background:var(--navy);display:grid;place-items:center;padding:1.5rem}
.login-card{width:100%;max-width:400px;padding:2rem 2rem 1.75rem;border-top:3px solid var(--gold);border-radius:8px}
.login-card .logo{width:72px;height:72px;margin:0 auto}
.login-card h1{font-size:1.4rem;margin:1rem 0 .15rem;text-align:center}

@media(max-width:991px){.sidebar{transform:translateX(-100%);transition:transform .2s}.sidebar.show{transform:none}.main{margin-left:0}.topbar{padding:.7rem 1rem}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}

/* modals whose header/body/footer are wrapped in a <form>: let the body scroll, keep header and footer fixed */
.modal-dialog-scrollable .modal-content>form{display:flex;flex-direction:column;min-height:0;max-height:100%;overflow:hidden}
.modal-dialog-scrollable .modal-content>form>.modal-body{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;scrollbar-width:thin}
.modal-dialog-scrollable .modal-content>form>.modal-header,.modal-dialog-scrollable .modal-content>form>.modal-footer{flex:none}
.modal-fullscreen-md-down .modal-content{border-radius:8px}
@media(max-width:767.98px){.modal-fullscreen-md-down .modal-content{border-radius:0;border:0}.modal-body{padding:1rem}}
/* step bar scrolls sideways on narrow screens instead of wrapping */
.sf-nav{flex-wrap:nowrap!important;overflow-x:auto;scrollbar-width:none}
.sf-nav::-webkit-scrollbar{display:none}
.sf-nav .btn{white-space:nowrap;flex:none}

/* User dropdown (My Account / Settings) */
.user-toggle{cursor:pointer}
.topbar .dropdown-menu{min-width:11rem;border:1px solid var(--line);border-radius:8px;padding:.35rem}
.topbar .dropdown-item{border-radius:6px;padding:.5rem .75rem;font-weight:500;color:var(--navy)}
.topbar .dropdown-item:hover{background:#eef2f8}
.topbar .dropdown-item.active{background:var(--navy);color:#fff}

.user-ico{font-size:1.6rem;line-height:1;color:var(--navy);flex:none;display:inline-block}
.user-toggle:hover .user-ico{color:var(--navy-2)}

/* Notification bell */
.bell-toggle{color:var(--navy);cursor:pointer;padding:.25rem}
.bell-ico{font-size:1.4rem;line-height:1;display:block}
.bell-toggle:hover{color:var(--navy-2)}
.bell-badge{position:absolute;top:-4px;right:-6px;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:#e5484d;color:#fff;font-size:.68rem;font-weight:600;line-height:18px;text-align:center;border:2px solid var(--surface,#fff);box-sizing:content-box}
.notif-menu{width:340px;max-width:calc(100vw - 1.5rem);overflow:hidden}
.notif-head{padding:.7rem 1rem;font-weight:600;color:var(--navy);border-bottom:1px solid var(--line)}
.notif-item{display:flex;gap:.75rem;align-items:flex-start;padding:.7rem 1rem;text-decoration:none;color:inherit;border-bottom:1px solid var(--line)}
.notif-item:hover{background:#eef2f8}
.notif-item>i{color:var(--gold);font-size:1.15rem;margin-top:.1rem}
.notif-item .min-w-0{min-width:0}
.notif-title{font-weight:600;color:var(--navy);overflow-wrap:anywhere}
.notif-meta{font-size:.8rem;color:#667085;overflow-wrap:anywhere}
.notif-empty{padding:1rem;font-size:.9rem;color:#667085;text-align:center}
.notif-foot{display:block;padding:.6rem 1rem;text-align:center;font-size:.85rem;font-weight:500;text-decoration:none;color:var(--navy-2)}
.notif-foot:hover{background:#eef2f8}

/* Events calendar */
.cal-head{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}
.cal-dow{text-align:center;font-size:.75rem;font-weight:600;color:#667085;padding:.4rem 0;text-transform:uppercase;letter-spacing:.03em}
.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-top:1px solid var(--line);border-left:1px solid var(--line)}
.cal-day{min-height:108px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:.3rem;cursor:pointer;overflow:hidden;background:var(--surface,#fff);min-width:0}
.cal-day:hover{background:#f1f5fb}
.cal-day.other{background:#f7f8fa;color:#98a2b3}
.cal-num{font-size:.8rem;font-weight:600;width:24px;height:24px;line-height:24px;text-align:center;border-radius:50%;margin-bottom:2px}
.cal-day.today .cal-num{background:var(--navy);color:#fff}
.cal-ev{display:block;width:100%;text-align:left;border:0;border-radius:4px;padding:2px 6px;margin-top:2px;font-size:.72rem;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-ev.up{background:var(--navy-2);color:#fff}
.cal-ev.past{background:#dde3ec;color:#344054}
.cal-more{border:0;background:none;font-size:.72rem;font-weight:600;color:var(--navy-2);padding:2px 4px}
.cal-dots{display:none;gap:3px;flex-wrap:wrap;justify-content:center;margin-top:4px}
.cal-dot{width:7px;height:7px;border-radius:50%}
.cal-dot.up,.cal-key.up{background:var(--navy-2)}
.cal-dot.past,.cal-key.past{background:#c9d1de}
.cal-key{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:.25rem}
@media(max-width:767px){.cal-day{min-height:56px;padding:.2rem}.cal-ev,.cal-more{display:none}.cal-dots{display:flex}.cal-num{margin:0 auto 2px;display:block}}
.topbar .bell-toggle,.topbar .user-toggle{display:flex;align-items:center}
.topbar .dropdown-header{white-space:normal;line-height:1.3}
.topbar .dropdown-item.text-danger:hover{background:#fdecec;color:#c0262b!important}
