.platform-card{border-radius:var(--cafor-radius);height:100%;box-shadow:var(--cafor-shadow);transition:var(--cafor-card-transition);background:#fff;border:1px solid #e8edf4;flex-direction:column;display:flex;overflow:hidden}.platform-card-media{height:130px;position:relative;overflow:hidden}.platform-card-img{object-fit:cover;transition:transform .55s}.platform-card:hover .platform-card-img{transform:scale(1.08)}.platform-card-overlay{background:linear-gradient(#1a448033 0%,#1a4480bf 100%);position:absolute;inset:0}.platform-card-tag{z-index:1;color:#fff;text-transform:uppercase;letter-spacing:.04em;text-shadow:0 1px 3px #0006;font-size:.65rem;font-weight:700;position:absolute;bottom:.7rem;left:.75rem}.platform-card-body{padding:1rem 1.1rem 1.15rem}.platform-card:hover{transform:perspective(900px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) translateY(-6px);box-shadow:var(--cafor-hover-shadow);border-color:#0000}.perf-chart{align-items:flex-end;gap:.75rem;height:200px;display:flex}.perf-col{flex-direction:column;flex:1;align-items:center;height:100%;display:flex}.perf-bar-track{flex-grow:1;justify-content:center;align-items:flex-end;width:100%;display:flex}.perf-bar{background:linear-gradient(180deg, var(--cafor-blue) 0%, var(--cafor-blue-deep) 100%);border-radius:6px 6px 0 0;width:70%;max-width:46px;min-height:6px;transition:height .5s;position:relative}.perf-bar-value{color:var(--cafor-blue-deep);font-size:.7rem;font-weight:700;position:absolute;top:-1.3rem;left:50%;transform:translate(-50%)}.perf-label{color:var(--cafor-muted);margin-top:.5rem;font-size:.75rem;font-weight:600}.spark-chart{align-items:flex-end;gap:.5rem;height:120px;display:flex}.spark-col{flex:1;align-items:flex-end;height:100%;display:flex}.spark-bar{background:var(--cafor-blue-light);border-top:3px solid var(--cafor-blue);border-radius:4px 4px 0 0;width:100%;min-height:8px;transition:height .5s}.score-row{align-items:center;gap:.75rem;padding:.5rem 0;display:flex}.score-name{color:var(--cafor-blue-deep);flex:0 0 42%;font-size:.8125rem;font-weight:600}.score-track{background:var(--cafor-blue-light);border-radius:999px;flex-grow:1;height:8px;overflow:hidden}.score-fill{border-radius:999px;height:100%}.score-fill-high{background:var(--cafor-blue)}.score-fill-low{background:#9bb8dd}.score-value{color:var(--cafor-blue-deep);text-align:right;flex:none;min-width:2.5rem;font-size:.8125rem;font-weight:700}.portal-sidebar .nav-link:hover{background:#ffffff1f}.portal-app{background:var(--cafor-gray);grid-template-columns:280px minmax(0,1fr);width:100%;min-height:calc(100vh - 72px);display:grid}.portal-app-sidebar{background:linear-gradient(180deg, #0b2347 0%, var(--cafor-blue-deep) 42%, #153d72 100%);border-right:1px solid #ffffff14;height:calc(100vh - 72px);position:sticky;top:72px;overflow-y:auto}.portal-sidebar-inner{flex-direction:column;min-height:100%;padding:1.35rem 1rem 1.25rem;display:flex}.portal-sidebar-brand{color:#fff;align-items:center;gap:.75rem;margin-bottom:1.75rem;padding:.35rem .5rem;text-decoration:none;display:flex}.portal-sidebar-brand:hover{color:#fff;opacity:.92}.portal-sidebar-logo{background:#fff;border-radius:8px;padding:2px}.portal-sidebar-brand-name{letter-spacing:.02em;font-size:1rem;font-weight:800}.portal-sidebar-brand-sub{text-transform:uppercase;letter-spacing:.08em;opacity:.65;font-size:.68rem}.portal-sidebar-nav{flex-direction:column;flex:1;gap:.35rem;display:flex}.portal-sidebar-link{color:#ffffffb8;border-radius:10px;align-items:center;gap:.65rem;padding:.65rem .85rem;font-size:.88rem;font-weight:600;text-decoration:none;transition:background .2s,color .2s,transform .2s;display:flex}.portal-sidebar-link i{opacity:.9;font-size:1rem}.portal-sidebar-link:hover{color:#fff;background:#ffffff1a}.portal-sidebar-link--active{color:var(--cafor-blue-deep);background:#fff;box-shadow:0 6px 18px #0000002e}.portal-sidebar-foot{border-top:1px solid #ffffff1f;margin-top:1.5rem;padding-top:1.25rem}.portal-sidebar-note{color:#ffffff8c;margin-bottom:.85rem;font-size:.72rem;line-height:1.45}.portal-sidebar-home{color:#ffffffc7;align-items:center;gap:.4rem;margin-bottom:.75rem;font-size:.78rem;text-decoration:none;display:inline-flex}.portal-sidebar-home:hover{color:#fff}.portal-sidebar-logout{color:#fff;background:0 0;border:1px solid #ffffff59;border-radius:8px;width:100%;padding:.5rem .75rem;font-size:.82rem;font-weight:600;transition:background .2s,border-color .2s}.portal-sidebar-logout:hover:not(:disabled){color:#fff;background:#ffffff1f;border-color:#ffffff8c}.portal-app-main{flex-direction:column;min-width:0;display:flex}.portal-app-header{background:var(--cafor-card-bg);border-bottom:1px solid var(--cafor-card-border);padding:1.75rem clamp(1.25rem,3vw,2.5rem) 1.25rem}.portal-app-crumb{margin-bottom:.65rem;font-size:.78rem}.portal-app-crumb a{color:var(--cafor-blue);text-decoration:none}.portal-app-crumb a:hover{text-decoration:underline}.portal-app-crumb-sep{color:var(--bs-secondary-color);margin:0 .4rem}.portal-app-kicker{text-transform:uppercase;letter-spacing:.1em;color:var(--cafor-blue);margin-bottom:.35rem;font-size:.72rem;font-weight:700}.portal-app-title{color:var(--cafor-blue-deep);margin:0;font-size:clamp(1.45rem,2.5vw,1.85rem);font-weight:800;line-height:1.2}.portal-app-desc{max-width:44rem;color:var(--bs-secondary-color);margin-top:.65rem;font-size:.95rem;line-height:1.55}.portal-app-content{flex:1;padding:clamp(1.25rem,2.5vw,2rem) clamp(1.25rem,3vw,2.5rem) 2.5rem}.portal-catalogue-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.portal-catalogue-stats{color:var(--bs-secondary-color);flex-wrap:wrap;align-items:center;gap:1rem 1.25rem;font-size:.84rem;display:flex}.portal-catalogue-stats strong{color:var(--cafor-blue-deep)}.portal-catalogue-stat-pill{background:var(--cafor-blue-light);color:var(--cafor-blue-deep);border-radius:999px;align-items:center;gap:.35rem;padding:.35rem .65rem;font-size:.78rem;font-weight:600;display:inline-flex}.portal-catalogue-filters{background:#fff;border:1px solid #e3eaf4;border-radius:14px;padding:1.1rem 1.25rem;box-shadow:0 4px 18px #1a44800f}.portal-search-wrap{position:relative}.portal-search-wrap .bi-search{color:var(--cafor-blue);opacity:.65;pointer-events:none;position:absolute;top:50%;left:.85rem;transform:translateY(-50%)}.portal-search-input{border-color:#d8e3f0;border-radius:10px;padding-left:2.35rem}.portal-search-input:focus{border-color:var(--cafor-blue);box-shadow:0 0 0 3px #3478c21f}[data-theme=dark] .portal-app{background:var(--bs-body-bg)}.admin-cms{font-family:Calibri,sans-serif}.admin-cms-card{background:#fff;border:1px solid #1a44801a;overflow:hidden}.admin-cms-card-header{background:linear-gradient(135deg, var(--cafor-blue-deep) 0%, var(--cafor-blue) 100%);color:#fff;padding:1rem 1.25rem}.admin-cms-card-header .btn-light{color:var(--cafor-blue-deep);font-weight:600}.admin-cms-muted{color:var(--cafor-muted)}.admin-cms-table thead{background:var(--cafor-blue-light);color:var(--cafor-blue-deep)}.admin-cms-table thead th{text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid #1a44801f;font-size:.75rem;font-weight:700}.admin-cms-table tbody tr:hover{background:#3478c20d}.admin-cms-thumb{background:#fff;border:1px solid #1a44801f;width:56px;height:40px}.admin-cms-preview{max-width:220px;border-color:#1a448026!important}.admin-cms-badge-live{color:var(--cafor-blue-deep);background:#3478c226}.admin-cms-badge-draft{color:var(--cafor-muted);background:#56709926}.admin-cms-badge-featured{color:var(--cafor-blue-deep);background:#1a44801f}.admin-staff-credentials{color:#065f46;background:linear-gradient(135deg,#ecfdf5 0%,#d1fae5 100%);border-radius:.75rem;padding:1.25rem 1.5rem;border:2px solid #10b981!important}.admin-staff-credentials .form-control{color:#065f46;background:#fff;font-weight:600}[data-theme=dark] .admin-staff-credentials{color:#ecfdf5;background:linear-gradient(135deg,#064e3b 0%,#065f46 100%);border-color:#34d399!important}[data-theme=dark] .admin-staff-credentials .form-control{color:#ecfdf5;background:#00000040;border-color:#fff3}[data-theme=dark] .admin-cms-card{background:var(--cafor-card-bg);border-color:var(--cafor-card-border)}[data-theme=dark] .admin-cms-card-header{background:linear-gradient(135deg,#0f1a2e 0%,#1a4480 100%)}[data-theme=dark] .admin-cms-table thead{color:#d4e4f8;background:#ffffff0f}[data-theme=dark] .admin-cms-table tbody tr:hover{background:#ffffff0a}[data-theme=dark] .admin-cms-thumb{background:#ffffff0a;border-color:#ffffff1f}[data-theme=dark] .admin-news-row-title{color:var(--bs-body-color)}[data-theme=dark] .admin-news-row-meta,[data-theme=dark] .admin-cms-muted{color:#ffffff9e}[data-theme=dark] .admin-cms-badge-live{color:#b8d4f0;background:#3478c247}[data-theme=dark] .admin-cms-badge-draft{color:#ffffffb8;background:#ffffff1a}[data-theme=dark] .admin-cms-badge-featured{color:#b8d4f0;background:#1a448059}[data-theme=dark] .admin-cms .btn-cafor-outline{color:#8eb8e8;border-color:var(--cafor-blue);background:0 0}[data-theme=dark] .admin-cms .btn-cafor-outline:hover{color:#fff;background:var(--cafor-blue)}[data-theme=dark] .admin-cms .btn-outline-danger{color:#f87171;background:0 0;border-color:#f87171}[data-theme=dark] .admin-cms .btn-outline-danger:hover{color:#fff;background:#dc2626}[data-theme=dark] .admin-cms-card-header .btn-light{color:var(--cafor-blue-deep);background:#fff}[data-theme=dark] .admin-inquiry-row{background:var(--cafor-card-bg);border-color:var(--cafor-card-border)}[data-theme=dark] .admin-inquiry-head strong{color:var(--bs-body-color)}[data-theme=dark] .admin-inquiry-org,[data-theme=dark] .admin-inquiry-date{color:#ffffff9e}[data-theme=dark] .admin-inquiry-email{color:#8eb8e8}[data-theme=dark] .admin-inquiry-body{color:#ffffffc7}[data-theme=dark] .admin-cms .form-control::file-selector-button{background:var(--cafor-blue);color:#fff;border:0;margin-right:.65rem;padding:.35rem .75rem;font-weight:600}[data-theme=dark] .portal-app-kicker{color:var(--cafor-blue-light)}[data-theme=dark] .portal-app-desc{color:#ffffff9e}[data-theme=dark] .portal-app-crumb,[data-theme=dark] .portal-app-crumb-sep{color:#ffffff8c}.admin-news-list{flex-direction:column;gap:1.25rem;display:flex}.admin-news-row{background:#fff;border:1px solid #1a448024;border-radius:12px;padding:1.25rem 1.35rem}.admin-news-row-head{align-items:flex-start;gap:1rem;margin-bottom:1.15rem;display:flex}.admin-news-cover{background:var(--cafor-blue-light) center/cover no-repeat;width:72px;height:72px;color:var(--cafor-blue);border:1px solid #1a44801f;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;font-size:1.75rem;display:inline-flex}.admin-news-cover--empty{color:var(--cafor-muted);background:#eef4fb}.admin-news-cover--stored{color:var(--cafor-blue-deep);background:#3478c21f}.admin-news-row-title{color:var(--cafor-blue-deep);margin:0 0 .35rem;font-size:1.25rem;font-weight:700;line-height:1.3}.admin-news-row-meta{color:var(--cafor-muted);font-size:.95rem}.admin-news-row-badges{flex-wrap:wrap;gap:.4rem;margin-top:.65rem;display:flex}.admin-news-row-badges .badge{padding:.35rem .65rem;font-size:.8rem}.admin-news-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:.65rem;display:grid}@media (min-width:768px){.admin-news-actions{grid-template-columns:repeat(5,minmax(0,1fr))}.admin-news-row{padding:1.5rem 1.65rem}.admin-news-row-title{font-size:1.35rem}}[data-theme=dark] .admin-news-row{background:var(--cafor-card-bg);border-color:#ffffff1a}[data-theme=dark] .admin-news-cover--empty,[data-theme=dark] .admin-news-cover--stored{background:#ffffff0f}.admin-inquiry-list{flex-direction:column;gap:1rem;display:flex}.admin-inquiry-row{background:#fff;border:1px solid #1a448024;border-radius:12px;padding:1.15rem 1.25rem}.admin-inquiry-head{flex-wrap:wrap;justify-content:space-between;gap:.35rem 1rem;margin-bottom:.35rem;display:flex}.admin-inquiry-date{color:var(--cafor-muted);font-size:.85rem}.admin-inquiry-email{word-break:break-all;margin-bottom:.35rem;font-size:.9rem;display:inline-block}@media (max-width:767.98px){.admin-bottom-nav{grid-template-columns:repeat(4,1fr)}}[data-theme=dark] .portal-app-header{background:var(--cafor-card-bg);border-bottom-color:var(--cafor-card-border)}[data-theme=dark] .portal-app-title{color:#d4e4f8}[data-theme=dark] .portal-catalogue-filters{background:#ffffff0a;border-color:#ffffff1a}@media (max-width:991px){.portal-app{grid-template-columns:1fr;min-height:auto}.portal-app-sidebar{height:auto;position:relative;top:0}.portal-sidebar-inner{min-height:auto}.portal-sidebar-nav{flex-flow:wrap}.portal-sidebar-link{flex:auto;justify-content:center}.portal-sidebar-foot{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.portal-sidebar-logout{flex:1;width:auto}}@media (max-width:767.98px){.portal-app-sidebar{display:none}.portal-app{padding-bottom:calc(4.25rem + env(safe-area-inset-bottom,0px))}.portal-app-header{padding:1rem 1rem .85rem}.portal-app-content{padding:1rem 1rem 1.5rem}.portal-app-title{font-size:1.35rem}.portal-app-desc{font-size:.88rem}.portal-catalogue-toolbar{flex-direction:column;align-items:stretch}.portal-catalogue-stats{justify-content:space-between;gap:.5rem}.portal-catalogue-filters{border-radius:12px;padding:.9rem 1rem}.course-card-head{height:148px}}.portal-bottom-nav{display:none}@media (max-width:767.98px){.portal-bottom-nav{z-index:1045;padding:.35rem .25rem calc(.35rem + env(safe-area-inset-bottom,0px));background:#0b2347;border-top:1px solid #ffffff1a;grid-template-columns:repeat(4,1fr);display:grid;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -8px 28px #0b234759}.portal-bottom-link,.portal-bottom-logout{color:#ffffff9e;letter-spacing:.01em;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;gap:.15rem;min-height:3.15rem;padding:.35rem .2rem;font-size:.62rem;font-weight:700;text-decoration:none;display:flex}.portal-bottom-link i,.portal-bottom-logout i{font-size:1.15rem;line-height:1}.portal-bottom-link--active{color:#fff;background:#ffffff1f}.portal-bottom-logout:disabled{opacity:.5}html[data-portal] .chat-fab{bottom:calc(4.75rem + env(safe-area-inset-bottom,0px))}html[data-portal] .back-to-top{bottom:calc(5.25rem + env(safe-area-inset-bottom,0px))}}@media (min-width:1400px){.portal-app{grid-template-columns:300px minmax(0,1fr)}}.portal-auth-page{background:var(--cafor-gray);min-height:calc(100vh - 72px)}[data-theme=dark] .portal-auth-page{background:var(--bs-body-bg)}.portal-auth-card{background:var(--cafor-card-bg);border:1px solid var(--cafor-card-border);color:var(--bs-body-color);box-shadow:var(--cafor-shadow)}.portal-auth-card .text-secondary,.portal-auth-card .form-text{color:var(--cafor-muted)!important}.portal-auth-card .form-label,.portal-auth-card legend,.portal-auth-card .form-check-label{color:var(--bs-body-color)}.portal-auth-info,.portal-auth-success{background:var(--cafor-blue-light);border-left:4px solid var(--cafor-blue);color:var(--cafor-text)}[data-theme=dark] .portal-auth-info,[data-theme=dark] .portal-auth-success{border-left-color:var(--cafor-blue);color:var(--bs-body-color);background:#3478c226}.portal-password-toggle{border-color:var(--cafor-blue)!important;color:var(--cafor-blue-deep)!important;background:var(--cafor-card-bg)!important}.portal-password-toggle:hover{background:var(--cafor-blue)!important;color:#fff!important;border-color:var(--cafor-blue)!important}[data-theme=dark] .portal-password-toggle{color:#b8d4f0!important;background:#ffffff0f!important;border-color:#ffffff24!important}[data-theme=dark] .portal-password-toggle:hover{background:var(--cafor-blue)!important;color:#fff!important;border-color:var(--cafor-blue)!important}.portal-flash-banner{background:var(--cafor-blue-light);color:var(--cafor-blue-deep);border-left:4px solid var(--cafor-blue)}[data-theme=dark] .portal-flash-banner{color:#d4e4f8;border-left-color:var(--cafor-blue);background:#3478c233}[data-theme=dark] .portal-auth-card .alert-danger{color:#f8d7da;background:#dc354526;border-color:#dc354559}[data-theme=dark] .portal-app-content .card,[data-theme=dark] .portal-app-content .card.shadow-sm{background:var(--cafor-card-bg);border-color:var(--cafor-card-border);color:var(--bs-body-color)}[data-theme=dark] .portal-app-content .stat-card{background:var(--cafor-card-bg);border:1px solid var(--cafor-card-border);color:var(--bs-body-color)}[data-theme=dark] .portal-app-content .stat-value{color:#b8d4f0}[data-theme=dark] .portal-app-content .stat-label{color:var(--cafor-muted)}[data-theme=dark] .portal-app-content .table{--bs-table-color:var(--bs-body-color);--bs-table-bg:transparent;--bs-table-border-color:#ffffff1a}[data-theme=dark] .portal-app-content .table thead th{color:#b8d4f0;background:#3478c226}[data-theme=dark] .portal-app-content .table td,[data-theme=dark] .portal-app-content .table th{color:var(--bs-body-color);border-color:#ffffff1a}[data-theme=dark] .portal-app-content .alert-light{color:var(--bs-body-color);background:#3478c21f;border-color:#3478c259!important}[data-theme=dark] .portal-app-content .alert-warning{color:#d4e4f8;background:#3478c22e;border-color:#3478c266}[data-theme=dark] .portal-app-content .alert-success{color:#d4e4f8;background:#3478c238;border-color:#3478c273}[data-theme=dark] .portal-catalogue-stats strong{color:#b8d4f0}[data-theme=dark] .portal-app-content .course-card-body,[data-theme=dark] .portal-app-content .course-card-title,[data-theme=dark] .portal-app-content .course-card-excerpt,[data-theme=dark] .portal-app-content .course-card-meta{color:var(--bs-body-color)}[data-theme=dark] .portal-app-content .course-tag{color:#b8d4f0;background:#3478c240}[data-theme=dark] .portal-app-content .input-group .form-control{border-right:0}[data-theme=dark] .portal-app-crumb a{color:#8eb8e8}[data-theme=dark] .portal-sidebar-link--active{color:var(--cafor-blue-deep);background:#fff}[data-theme=dark] .admin-cms-table td,[data-theme=dark] .admin-cms-table th{color:var(--bs-body-color)}[data-theme=dark] .admin-cms .badge.bg-secondary{color:#d4e4f8!important;background:#ffffff26!important}[data-theme=dark] .admin-cms .badge.bg-warning{color:#d4e4f8!important;background:#3478c259!important}[data-theme=dark] .admin-cms .badge.bg-success{color:#fff!important;background:#3478c273!important}[data-theme=dark] .portal-app-content code{color:#b8d4f0;background:#3478c233;border-radius:4px;padding:.1rem .35rem}
