@charset "UTF-8";
:root{--ink:#223636;--muted:#73817f;--primary:#255d52;--primary-dark:#19473d;--sidebar:#163b3c;--line:#e5eae5;--page:#f5f7f3;--card:#fff;--radius:14px;--bs-primary:#255d52;--bs-link-color:#255d52;--bs-link-hover-color:#183e37;--bs-body-font-family:Inter,"Segoe UI",system-ui,-apple-system,BlinkMacSystemFont,sans-serif;--bs-body-color:#223636;--bs-body-bg:#f5f7f3}
*{box-sizing:border-box}body{margin:0;font-size:14px;line-height:1.6;color:var(--ink);background:var(--page)}a{color:var(--primary);text-decoration:none}button,input,select,textarea{font:inherit}button,a,input,select,textarea{touch-action:manipulation}:focus-visible{outline:3px solid #89ad56;outline-offset:3px}.skip-link{position:fixed;top:-60px;left:15px;z-index:2000;padding:10px 16px;background:white;color:var(--ink)}.skip-link:focus{top:15px}.app-sidebar{width:242px;position:fixed;inset:0 auto 0 0;z-index:1030;background:var(--sidebar);color:#d8e5df;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:10px;padding:28px 24px 25px;color:white;font-size:25px;font-weight:750;letter-spacing:-1px;line-height:1.1}.brand:hover{color:white}.brand-mark{width:38px;height:38px;background:#d4e6ab;color:#1a4140;border-radius:11px;display:grid;place-items:center;flex-shrink:0}.brand-mark svg{width:30px;height:30px}.brand-light{font-weight:400;color:#d4e6ab}.brand small{font-size:7px;letter-spacing:2px;color:#a9c4bd;font-weight:500;display:block;margin-top:7px}.institute-switcher{margin:0 17px 22px;padding:12px 10px;border:1px solid #355653;border-radius:10px;display:flex;gap:10px;align-items:center;min-height:62px}.institute-switcher>span:nth-child(2){flex:1;min-width:0}.institute-switcher strong{display:block;font-size:11px;color:#f3f6ee;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.institute-switcher small{display:block;color:#a7bfb5;font-size:10px;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.institute-avatar{height:31px;width:31px;display:grid;place-items:center;flex-shrink:0;border-radius:8px;background:#3b5c54;color:#d9e9bf;font-weight:700}.workspace-dot{width:6px;height:6px;border-radius:50%;background:#afd27d}.sidebar-nav{overflow-y:auto;padding:0 14px 15px;flex:1;scrollbar-width:thin;scrollbar-color:#43675d transparent}.nav-section-label{display:block;font-size:9px;letter-spacing:1.6px;font-weight:600;color:#93b0a5;padding:15px 14px 8px;text-transform:uppercase}.nav-section-label:first-child{padding-top:0}.nav-item{display:flex;align-items:center;gap:12px;min-height:38px;padding:8px 12px;border-radius:7px;color:#bdcfc9;font-size:12px;font-weight:500;margin:2px 0;transition:background .15s,color .15s}.nav-item:hover{color:#fff;background:#274c47}.nav-item.active{background:#d5e8ae;color:#1a4037;font-weight:650}.nav-icon{display:inline-flex;justify-content:center;align-items:center;width:19px;height:19px;font-size:19px;line-height:1}.nav-letter{font-family:inherit;font-size:10px;border:1px solid currentColor;border-radius:4px;width:17px;height:17px;opacity:.8}.sidebar-footer{border-top:1px solid #31504b;padding:20px 25px;font-size:11px;flex-shrink:0}.sidebar-footer small{display:block;font-size:9px;color:#8fac9f;margin-top:6px}.status-dot{display:inline-block;width:6px;height:6px;background:#bad890;border-radius:50%;margin-right:7px}.app-shell{margin-left:242px;min-height:100vh}.topbar{height:82px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 34px;gap:20px}.workspace-title{font-size:11px;font-weight:550;color:#40534d;white-space:nowrap}.workspace-title>span:last-child{font-weight:400;color:#7c8881}.topbar-divider{color:#ccd4ca;padding:0 13px}.topbar-actions{display:flex;gap:18px;align-items:center}.global-search{display:flex;align-items:center;gap:9px;border:1px solid var(--line);background:#f9faf7;height:37px;border-radius:7px;padding:0 10px;max-width:240px}.global-search svg{width:16px;height:16px;color:#819087;flex-shrink:0}.global-search input{font-size:11px;background:none;border:0;outline:0;min-width:0;width:145px}.global-search input::placeholder{color:#87928a}.global-search kbd{font-size:9px;background:white;color:#8a958d;border:1px solid #e2e6de;border-radius:3px;padding:0 4px}.icon-button{width:32px;height:34px;display:inline-flex;align-items:center;justify-content:center;border:0;background:transparent;color:#708277;padding:6px;border-radius:7px;cursor:pointer}.icon-button:hover{background:#f0f4eb;color:#244e3e}.icon-button svg{width:21px;height:21px}.user-profile{display:flex;align-items:center;gap:10px;padding-left:16px;border-left:1px solid var(--line)}.user-avatar{height:35px;width:35px;flex-shrink:0;background:#e8ddc5;color:#78694e;border:3px solid #f7f3eb;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:650}.user-copy strong{font-size:11px;font-weight:650;display:block;line-height:1.5;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-copy small{display:block;font-size:9px;color:#869087}.logout-form{margin:0}.sidebar-toggle{display:none}.main-content{padding:24px 34px 0;max-width:1700px;margin:auto;outline:none}.breadcrumb-row{margin-bottom:21px}.breadcrumb{--bs-breadcrumb-divider:'›';margin:0;gap:2px;font-size:10px}.breadcrumb a{color:#859086}.breadcrumb-item.active{color:#41564b}.page-header,.page-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:26px}.page-header h1,.page-heading h1,h1.page-title{font-size:27px;line-height:1.25;letter-spacing:-.9px;font-weight:650;margin:0 0 8px;color:#233c32}.page-header p,.page-heading p,.page-description{font-size:12px;color:#7c887d;margin:0}.eyebrow{font-size:9px;text-transform:uppercase;letter-spacing:1.6px;color:#728369;font-weight:650;margin-bottom:9px}.page-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.btn{font-size:11px;font-weight:600;border-radius:7px;padding:9px 14px;display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:36px}.btn-primary{--bs-btn-bg:#255d52;--bs-btn-border-color:#255d52;--bs-btn-hover-bg:#19473d;--bs-btn-hover-border-color:#19473d;--bs-btn-active-bg:#19473d;--bs-btn-active-border-color:#19473d;--bs-btn-disabled-bg:#255d52;--bs-btn-disabled-border-color:#255d52;box-shadow:0 2px 2px #214b3b12}.btn-outline-primary{--bs-btn-color:#255d52;--bs-btn-border-color:#c9d6c9;--bs-btn-hover-bg:#255d52;--bs-btn-hover-border-color:#255d52;--bs-btn-active-bg:#255d52;--bs-btn-active-border-color:#255d52}.btn-outline-secondary{--bs-btn-color:#526551;--bs-btn-border-color:#dfe5da;--bs-btn-hover-bg:#edf2e7;--bs-btn-hover-color:#244c35;--bs-btn-hover-border-color:#ccd9be;background:#fff}.btn-sm{padding:5px 10px;font-size:10px;min-height:29px}.btn-link{color:var(--primary)}.hero-card{background:#e8eddb;border:1px solid #e0e7ce;border-radius:var(--radius);padding:27px 30px;position:relative;overflow:hidden;margin-bottom:25px}.hero-card h2{font-size:25px;line-height:1.3;letter-spacing:-.6px;font-weight:600;margin:0 0 9px}.hero-card p{color:#748065;font-size:12px;max-width:510px;margin:0}.hero-card .eyebrow{color:#637452}.hero-card .hero-decoration{position:absolute;right:25px;bottom:-14px;font-size:110px;color:#91a66a;opacity:.24;pointer-events:none}.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin-bottom:25px}.stat-card{position:relative;background:white;border:1px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:0 2px 2px #233c3202;min-width:0}.stat-label{color:#7b887c;font-size:11px;display:block;font-weight:450;margin-bottom:9px}.stat-value{font-size:28px;line-height:1.15;font-weight:650;color:#254335;letter-spacing:-1px}.stat-trend{font-size:9px;color:#6d855e;margin-top:12px;display:block}.stat-icon{display:grid;place-items:center;position:absolute;right:17px;top:17px;width:31px;height:31px;background:#eef3e5;border-radius:8px;color:#6d8b54;font-size:16px}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(270px,1fr);gap:21px}.content-card,.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 2px 2px #233c3202;overflow:hidden}.content-card{margin-bottom:22px}.card-header{padding:18px 21px;border-bottom:1px solid var(--line);background:transparent;display:flex;justify-content:space-between;align-items:center;gap:14px}.card-header h2,.section-title{font-size:14px;font-weight:650;letter-spacing:-.2px;margin:0}.card-header p{font-size:10px;color:#809080;margin:4px 0 0}.card-body{padding:21px}.table-toolbar,.filter-bar{display:flex;justify-content:space-between;align-items:end;gap:12px;flex-wrap:wrap;padding:16px 20px;border-bottom:1px solid var(--line)}.table-toolbar form,.filter-bar form{display:flex;align-items:end;gap:10px;flex-wrap:wrap}.filter-bar .form-control,.filter-bar .form-select,.table-toolbar .form-control,.table-toolbar .form-select{min-width:150px}.filter-bar label,.table-toolbar label{font-size:10px;font-weight:600;color:#65755f;margin-bottom:5px}.table{margin-bottom:0;--bs-table-bg:transparent;--bs-table-color:#4a5c4a;--bs-table-border-color:#edf0e9;font-size:11px;vertical-align:middle}.table>thead>tr>th{font-size:9px;text-transform:uppercase;font-weight:650;letter-spacing:.65px;color:#819078;background:#fafbf7;white-space:nowrap;padding:12px 20px;border-bottom-width:1px}.table>tbody>tr>td,.table>tbody>tr>th{padding:15px 20px}.table>tbody>tr:last-child>td{border-bottom:0}.table a{font-weight:550}.table-hover>tbody>tr:hover>*{--bs-table-accent-bg:#f8faf5;--bs-table-bg-state:#f8faf5}.table td:first-child{font-weight:550;color:#364c39}.table-empty{padding:40px!important;text-align:center;color:#7b8976!important}.table-responsive{scrollbar-width:thin}.badge{font-weight:550;letter-spacing:.15px;font-size:9px;padding:5px 8px;border-radius:5px;line-height:1.1}.badge-soft-success,.bg-success-subtle{background:#eaf3e4!important;color:#52773d!important}.badge-soft-primary,.bg-primary-subtle{background:#e6eeeb!important;color:#436657!important}.badge-soft-warning,.bg-warning-subtle{background:#fcf1dc!important;color:#9e7f37!important}.badge-soft-danger,.bg-danger-subtle{background:#f9eae5!important;color:#aa6152!important}.badge.bg-secondary{background:#eef1e8!important;color:#7b866e!important}.text-muted{color:#82907e!important}.text-success{color:#57874b!important}.empty-state{text-align:center;padding:54px 28px;color:#809079}.empty-state .empty-icon{display:grid;place-items:center;width:54px;height:54px;background:#f0f4e9;color:#9aa887;border-radius:16px;margin:0 auto 17px;font-size:25px}.empty-state h2,.empty-state h3{font-size:16px;color:#40513a;font-weight:600;margin:0 0 8px}.empty-state p{font-size:12px;max-width:370px;margin:0 auto 18px}.form-control,.form-select{font-size:12px;color:#40563e;padding:9px 11px;min-height:38px;border:1px solid #dae2d4;border-radius:7px;background-color:#fff}.form-control:focus,.form-select:focus{border-color:#8ba575;box-shadow:0 0 0 3px #9ab58125}.form-label,label{font-size:12px;font-weight:550;color:#52664a}.form-text,.helptext{font-size:10px;color:#829276;display:block;margin-top:5px}.form-check-input:checked{background-color:var(--primary);border-color:var(--primary)}.errorlist{list-style:none;margin:6px 0;padding:0;color:#b64d42;font-size:11px}.form-panel{max-width:880px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.field-group{margin-bottom:20px}.field-group textarea{width:100%}.form-actions{display:flex;align-items:center;gap:10px;border-top:1px solid var(--line);padding-top:21px;margin-top:24px}.alert{font-size:12px;border-radius:9px;padding:13px 40px 13px 16px}.alert-success{background:#edf5e4;color:#4d703e;border-color:#dce8ce}.alert-danger{background:#fff1ee;color:#9a4e40;border-color:#f1d4ce}.alert-info{background:#eef4ed;color:#547149;border-color:#dce7d8}.alert-dismissible .btn-close{padding:17px;font-size:9px}.pagination{gap:5px;margin:0}.page-link{border:1px solid var(--line);background:#fff;color:#657b59;border-radius:6px!important;font-size:11px;padding:6px 11px}.page-link:hover{color:var(--primary);background:#f2f6ec;border-color:#d0dcc4}.active>.page-link,.page-link.active{background:var(--primary);border-color:var(--primary);color:#fff}.pagination-row,.pagination-bar{display:flex;align-items:center;justify-content:space-between;padding:15px 20px;border-top:1px solid var(--line);font-size:10px;color:#819076}.page-footer{display:flex;align-items:center;justify-content:space-between;border-top:1px solid #e1e7d9;padding:22px 0;margin-top:34px;font-size:9px;color:#99a28e}.footer-separator{padding:0 9px;color:#bcc5b0}.activity-list{list-style:none;padding:0;margin:0}.activity-list li{position:relative;padding:12px 0 12px 25px;border-bottom:1px solid #eef2e8;font-size:11px}.activity-list li:last-child{border:0}.activity-list li:before{content:'';position:absolute;left:0;top:19px;width:7px;height:7px;border-radius:50%;background:#aac582}.activity-list small{font-size:9px;color:#9ba88f;display:block;margin-top:3px}.quick-links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.quick-links a{display:flex;align-items:center;gap:10px;border:1px solid #e2e9d9;border-radius:8px;padding:12px;font-size:11px;background:#fafcf7}.quick-links a:hover{background:#f0f6e7;border-color:#bed0ad}.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}.detail-grid dt{font-size:10px;color:#8b997f;text-transform:uppercase;letter-spacing:.6px;margin-bottom:5px}.detail-grid dd{font-size:13px;margin:0;color:#405539;overflow-wrap:anywhere}.nav-tabs{border-color:var(--line);gap:18px}.nav-tabs .nav-link{color:#849178;font-size:12px;padding:10px 4px;border:0;border-bottom:2px solid transparent;border-radius:0}.nav-tabs .nav-link.active{color:var(--primary);background:transparent;border-color:var(--primary);font-weight:650}.message-body{white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px;line-height:1.8;color:#53634a}.message-meta{font-size:11px;color:#859279;display:flex;gap:20px;flex-wrap:wrap}.notice-card{padding:22px 24px;border-bottom:1px solid var(--line)}.notice-card:last-child{border-bottom:0}.notice-card h2{font-size:16px;font-weight:600;margin:8px 0}.notice-card p{color:#6d7c63;font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere;margin:10px 0 0}.notice-meta{font-size:10px;color:#95a18a;display:flex;justify-content:space-between;align-items:center}.auth-body{min-height:100vh;background:#f4f6ed}.auth-main{min-height:100vh;display:grid;place-items:center;padding:40px 20px;outline:none}.auth-layout{max-width:1080px;min-height:620px;width:100%;display:grid;grid-template-columns:1fr 1fr;overflow:hidden;border:1px solid #e0e6d6;border-radius:21px;background:#fff;box-shadow:0 20px 70px #264c3020}.auth-story{background:#193d39;color:#e4eddb;padding:45px 45px 35px;position:relative;display:flex;flex-direction:column;overflow:hidden}.auth-story .brand{padding:0;align-self:flex-start}.auth-story h1{font-size:42px;font-weight:500;line-height:1.18;letter-spacing:-1.7px;margin:80px 0 22px}.auth-story h1 em{font-style:normal;color:#d3e6a7}.auth-story p{font-size:13px;color:#a6c0b0;max-width:310px;line-height:1.9}.auth-art{margin-top:30px;position:relative;height:125px;border-bottom:1px solid #527360}.auth-art .arch{position:absolute;bottom:0;border:1px solid #789272;width:92px;height:105px;border-radius:50px 50px 0 0;background:#294c3d;left:20px}.auth-art .arch:nth-child(2){height:145px;left:105px;width:116px;background:#8caa69;border-color:#8caa69}.auth-art .arch:nth-child(3){height:80px;left:210px;background:#cbdda1;width:78px}.auth-art .arch:after{content:'';position:absolute;inset:20px;border:1px solid #ffffff30;border-bottom:0;border-radius:40px 40px 0 0}.auth-story-footer{margin-top:auto;padding-top:30px;font-size:10px;letter-spacing:.5px;color:#8dad97}.auth-form-side{padding:65px 55px;display:flex;flex-direction:column;justify-content:center}.auth-form-side h2{font-size:27px;letter-spacing:-.8px;color:#2b4433;margin-bottom:8px;font-weight:600}.auth-form-side>p{font-size:12px;color:#85937b;margin:0 0 30px}.auth-form-side .field-group{margin-bottom:20px}.auth-form-side .form-control{min-height:44px;font-size:13px}.auth-form-side .btn{min-height:44px;font-size:12px}.auth-form-side .forgot-link{font-size:11px;text-align:right;display:block;margin:-5px 0 25px}.auth-note{font-size:10px;color:#9aa58f;text-align:center;line-height:1.8;margin:25px 0 0}.auth-simple{max-width:480px;width:100%;padding:42px;border-radius:17px;border:1px solid var(--line);background:#fff}.auth-simple h1{font-size:25px;font-weight:600;margin:0 0 13px}.auth-simple p{font-size:13px;color:#7d8d73}.auth-simple .brand{padding:0 0 28px;color:#244c39}.auth-simple .brand small{color:#718663}.auth-simple .brand-light{color:#81a35f}.auth-simple input:not([type=checkbox]){width:100%;padding:10px 12px;border:1px solid #d8e2d1;border-radius:7px;margin:6px 0 10px}.sidebar-backdrop{display:none}.print-only{display:none}.loading{opacity:.6;pointer-events:none}.htmx-request{cursor:progress}.htmx-indicator{display:none}.htmx-request .htmx-indicator,.htmx-request.htmx-indicator{display:inline-block}
@media(min-width:1500px){.main-content{padding-left:45px;padding-right:45px}.topbar{padding:0 45px}.stat-card{padding:24px}}
@media(max-width:1200px){.workspace-title>span:last-child,.topbar-divider{display:none}.topbar-actions{gap:11px}.global-search{max-width:180px}.global-search input{width:105px}.stat-grid{gap:12px}.stat-value{font-size:25px}.stat-icon{width:25px;height:25px;right:13px;top:15px}.stat-card{padding:16px}.stat-label{max-width:80%}.dashboard-grid{grid-template-columns:minmax(0,1.5fr) minmax(250px,1fr)}}
@media(max-width:1000px){.app-sidebar{width:210px}.app-shell{margin-left:210px}.brand{padding-left:20px}.main-content{padding:23px}.topbar{padding:0 23px}.global-search{display:none}.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-grid{grid-template-columns:1fr}.auth-layout{max-width:900px}.auth-story{padding:35px}.auth-form-side{padding:45px 35px}.auth-story h1{font-size:37px}}
@media(max-width:767px){.app-sidebar{transform:translateX(-100%);width:252px;transition:transform .2s}.sidebar-open .app-sidebar{transform:translateX(0)}.sidebar-open .sidebar-backdrop{display:block;position:fixed;inset:0;background:#18372666;z-index:1029}.sidebar-open{overflow:hidden}.sidebar-toggle{display:inline-flex}.app-shell{margin-left:0}.topbar{height:65px;padding:0 17px;gap:10px}.workspace-title{flex:1;font-size:10px}.topbar-actions{gap:6px}.user-copy{display:none}.user-profile{padding-left:8px}.user-avatar{width:30px;height:30px}.main-content{padding:20px 17px 0}.breadcrumb-row{margin-bottom:18px}.page-header,.page-heading{flex-wrap:wrap;gap:15px;margin-bottom:21px}.page-header h1,.page-heading h1{font-size:25px}.page-header p{font-size:11px}.page-actions{width:100%}.hero-card{padding:22px}.hero-card h2{font-size:22px}.hero-card p{font-size:11px}.stat-grid{gap:10px;margin-bottom:19px}.stat-value{font-size:25px}.stat-label{font-size:10px}.stat-trend{font-size:8px}.stat-card{padding:16px 14px}.card-header{padding:16px}.table>thead>tr>th,.table>tbody>tr>td,.table>tbody>tr>th{padding-left:15px;padding-right:15px}.table-toolbar,.filter-bar{padding:15px}.filter-bar form,.table-toolbar form{width:100%}.filter-bar .form-control,.filter-bar .form-select,.table-toolbar .form-control,.table-toolbar .form-select{min-width:130px}.form-grid,.detail-grid{grid-template-columns:1fr;gap:14px}.page-footer{font-size:8px}.page-footer>span:first-child{max-width:85%}.auth-layout{grid-template-columns:1fr;max-width:440px;min-height:0}.auth-story{padding:28px}.auth-story .brand{font-size:24px}.auth-story h1{font-size:26px;letter-spacing:-.7px;margin:24px 0 0}.auth-story p,.auth-art,.auth-story-footer{display:none}.auth-form-side{padding:30px}.auth-form-side h2{font-size:25px}.auth-main{padding:20px 15px}.auth-simple{padding:30px}.pagination-row,.pagination-bar{gap:10px;flex-wrap:wrap}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
@media print{@page{margin:14mm}.app-sidebar,.topbar,.breadcrumb-row,.page-footer,.page-actions,.table-toolbar,.filter-bar,.pagination,.pagination-row,.btn,.no-print{display:none!important}.app-shell{margin:0}.main-content{padding:0;max-width:none}.app-body{background:white;color:#000;font-size:11pt}.content-card,.card,.stat-card{box-shadow:none;break-inside:avoid}.table{font-size:9pt}.table thead{display:table-header-group}.table tr{break-inside:avoid}.print-only{display:block}.stat-grid{grid-template-columns:repeat(4,1fr)}a{color:inherit!important;text-decoration:none!important}}

.student-id-card { max-width: 440px; }
