/* Master LMS CSS layered behind Bootstrap */

/* ================================
   Day / Night Theme Variables
   ================================ */

:root,
html[data-theme="day"],
html:not([data-theme]) {
  --lms-bg: #f8f9fa;
  --lms-text: #212529;
  --lms-card: #ffffff;
  --lms-border: #dee2e6;
  --lms-muted: #6c757d;
  --lms-accent: #0d6efd;
  --lms-table-bg: #ffffff;
  --lms-table-stripe: #f8f9fa;
}

html[data-theme="night"] {
  --lms-bg: #0f1115;
  --lms-text: #e6e6e6;
  --lms-card: #1c1f26;
  --lms-border: #2a2e38;
  --lms-muted: #9ca3af;
  --lms-accent: #8bd3dd;
  --lms-table-bg: #1c1f26;
  --lms-table-stripe: #252830;
}

body {
  background-color: var(--lms-bg) !important;
  color: var(--lms-text) !important;
  transition: background-color 0.2s ease, color 0.2s ease;
}

.lms-card,
.card {
  background-color: var(--lms-card) !important;
  border-color: var(--lms-border) !important;
}

/* Tables */
.table {
  --bs-table-bg: var(--lms-table-bg);
  --bs-table-striped-bg: var(--lms-table-stripe);
  color: var(--lms-text);
}

html[data-theme="night"] .table {
  --bs-table-bg: var(--lms-table-bg);
  color: var(--lms-text);
}

html[data-theme="night"] .table-dark {
  --bs-table-bg: #212529;
}

/* Text utilities */
html[data-theme="night"] .text-dark {
  color: var(--lms-text) !important;
}

html[data-theme="night"] .text-muted {
  color: var(--lms-muted) !important;
}

html[data-theme="night"] .bg-light {
  background-color: var(--lms-card) !important;
}

html[data-theme="night"] .bg-white {
  background-color: var(--lms-card) !important;
}

html[data-theme="night"] .border {
  border-color: var(--lms-border) !important;
}

html[data-theme="night"] .border-bottom {
  border-color: var(--lms-border) !important;
}

html[data-theme="night"] .border-top {
  border-color: var(--lms-border) !important;
}

/* Form controls */
html[data-theme="night"] .form-control,
html[data-theme="night"] .form-select {
  background-color: var(--lms-card);
  border-color: var(--lms-border);
  color: var(--lms-text);
}

html[data-theme="night"] .form-control:focus,
html[data-theme="night"] .form-select:focus {
  background-color: var(--lms-card);
  border-color: var(--lms-accent);
  color: var(--lms-text);
}

/* Accordion */
html[data-theme="night"] .accordion-item {
  background-color: var(--lms-card);
  border-color: var(--lms-border);
}

html[data-theme="night"] .accordion-button {
  background-color: var(--lms-card);
  color: var(--lms-text);
}

html[data-theme="night"] .accordion-button:not(.collapsed) {
  background-color: var(--lms-table-stripe);
  color: var(--lms-text);
}

html[data-theme="night"] .accordion-body {
  background-color: var(--lms-bg);
}

/* List groups */
html[data-theme="night"] .list-group-item {
  background-color: var(--lms-card);
  border-color: var(--lms-border);
  color: var(--lms-text);
}

html[data-theme="night"] .list-group-item-action:hover {
  background-color: var(--lms-table-stripe);
}

/* Shadows in dark mode */
html[data-theme="night"] .shadow,
html[data-theme="night"] .shadow-sm,
html[data-theme="night"] .shadow-lg {
  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.4) !important;
}

.lms-card{border-radius:14px;}

/* ================================
   Navbar layout helpers (Flexbox)
   ================================ */

.lms-navbar .lms-btn {
  border-width: 1px;
  letter-spacing: .2px;
}

.lms-navbar .lms-tools {
  margin-left: auto;
}

.lms-navbar .lms-search .input-group-text {
  background: transparent;
  border-color: rgba(255,255,255,.25);
  color: rgba(255,255,255,.85);
}

.lms-navbar .lms-search .form-control {
  background: transparent;
  border-color: rgba(255,255,255,.25);
  color: #fff;
}

.lms-navbar .lms-search .form-control::placeholder {
  color: rgba(255,255,255,.55);
}

.lms-navbar .lms-search .form-control:focus {
  box-shadow: none;
  border-color: rgba(255,255,255,.45);
}

.lms-navbar .lms-theme-toggle {
  margin-left: 0;
}

/* On narrow screens, keep tools readable */
@media (max-width: 992px) {
  .lms-navbar .d-flex.w-100 {
    flex-direction: column;
    align-items: stretch !important;
  }
  .lms-navbar .lms-tools {
    width: 100%;
    justify-content: flex-start;
  }
  .lms-navbar .lms-search {
    width: 100%;
  }
  .lms-navbar .lms-search .input-group {
    width: 280px;
    max-width: 100%;
  }
}

/* ================================
   LMS Navbar – Thicker Outline Buttons
   ================================ */

.lms-navbar .btn-outline-primary,
.lms-navbar .btn-outline-success,
.lms-navbar .btn-outline-info,
.lms-navbar .btn-outline-warning,
.lms-navbar .btn-outline-secondary,
.lms-navbar .btn-outline-light {
  --bs-btn-border-width: 2px;
  border-width: 2px;
  font-weight: 500;
  letter-spacing: 0.25px;
  padding: 0.35rem 0.6rem;
  border-radius: 0.45rem;
}

/* Hover = confident, not flashy */
.lms-navbar .btn-outline-primary:hover,
.lms-navbar .btn-outline-success:hover,
.lms-navbar .btn-outline-info:hover,
.lms-navbar .btn-outline-warning:hover,
.lms-navbar .btn-outline-secondary:hover,
.lms-navbar .btn-outline-light:hover {
  background-color: currentColor;
  color: #000;
}

/* Night mode correction */
[data-theme="night"] .lms-navbar .btn-outline-light:hover {
  color: #111;
}

/* Icons align better */
.lms-navbar .btn i {
  vertical-align: -0.125em;
}

/* ================================
   LMS Navbar – Search Box Match
   ================================ */

.lms-navbar .lms-search {
  min-width: 260px;
}

.lms-navbar .lms-search .form-control {
  border-width: 2px;
  border-radius: 0.45rem;
  padding: 0.35rem 0.6rem;
  font-weight: 500;
  letter-spacing: 0.25px;
  background: transparent;
}

.lms-navbar .lms-search .form-control:focus {
  box-shadow: none;
  outline: none;
}

/* Optional: if your search uses an input-group with a button */
.lms-navbar .lms-search .btn {
  border-width: 2px;
  border-radius: 0.45rem;
  padding: 0.35rem 0.6rem;
  font-weight: 500;
  letter-spacing: 0.25px;
}

/* Night mode: readable input text + placeholder */
[data-theme="night"] .lms-navbar .lms-search .form-control {
  color: rgba(255,255,255,0.92);
  border-color: rgba(255,255,255,0.35);
}
[data-theme="night"] .lms-navbar .lms-search .form-control::placeholder {
  color: rgba(255,255,255,0.55);
}

/* ================================
   LMS Navbar – Search Input Group Unified
   (icon + input behave as ONE box)
   ================================ */

.lms-navbar .lms-search .input-group {
  border: 2px solid currentColor;
  border-radius: 0.45rem;
  overflow: hidden;
}

/* Icon side */
.lms-navbar .lms-search .input-group-text {
  background: transparent;
  border: none;
  padding: 0.35rem 0.55rem;
  font-weight: 500;
  letter-spacing: 0.25px;
  color: inherit;
}

/* Input side */
.lms-navbar .lms-search .form-control {
  background: transparent;
  border: none;
  padding: 0.35rem 0.6rem;
  font-weight: 500;
  letter-spacing: 0.25px;
  color: inherit;
}

.lms-navbar .lms-search .form-control:focus {
  box-shadow: none;
  outline: none;
}

/* Hover = matches outline button behavior */
.lms-navbar .lms-search:hover .input-group {
  background-color: currentColor;
  color: #000;
}

/* Night-mode correction */
[data-theme="night"] .lms-navbar .lms-search:hover .input-group {
  color: #111;
}

/* Placeholder tuning */
.lms-navbar .lms-search .form-control::placeholder {
  color: rgba(255,255,255,0.6);
}

/* Icon alignment */
.lms-navbar .lms-search .input-group-text i {
  vertical-align: -0.125em;
}

/* ================================
   LMS Navbar – Flush Search Right
   ================================ */

/* Push the tools cluster (search + buttons + toggle) to the far right */
.lms-navbar .lms-tools {
  margin-left: auto;
}

/* Prevent search from shrinking */
.lms-navbar .lms-search {
  flex-shrink: 0;
}

/* ================================
   LMS Navbar – Right Cluster
   ================================ */

/* Push the entire right cluster (search + buttons + toggle) to the far right */
.lms-navbar .lms-right {
  margin-left: auto;
}

/* Make search look consistent and not collapse */
.lms-navbar .lms-search .input-group {
  min-width: 240px;
}

/* ================================
   LMS Search – outline matched
   ================================ */
.lms-navbar .lms-search .input-group-text,
.lms-navbar .lms-search .form-control {
  border-width: 2px;
}

.lms-navbar .lms-search .input-group-text {
  background: transparent;
  color: rgba(255,255,255,.85);
  border-color: rgba(255,255,255,.35);
}

.lms-navbar .lms-search .form-control {
  background: transparent;
  color: rgba(255,255,255,.95);
  border-color: rgba(255,255,255,.35);
}

.lms-navbar .lms-search .form-control::placeholder {
  color: rgba(255,255,255,.55);
}

.lms-navbar .lms-search .form-control:focus {
  box-shadow: none;
  border-color: rgba(255,255,255,.65);
}

/* Rich HTML display area */
.lms-rich h1, .lms-rich h2, .lms-rich h3 { margin-top: .5rem; }
.lms-rich p { margin-bottom: .6rem; }
.lms-rich ul, .lms-rich ol { margin-bottom: .6rem; padding-left: 1.2rem; }
.lms-rich a { color: rgba(255,255,255,.9); text-decoration: underline; }

/* ================================
   LMS Layout: constrain main body
   ================================ */
.lms-main{
  max-width:1200px;
  margin-left:auto;
  margin-right:auto;
  padding-left:1rem;
  padding-right:1rem;
}

/* ================================
   LMS container max width (desktop)
   ================================ */
.lms-container { max-width: 1200px; }

/* Sortable headers (subtle) */
.lms-sortable thead th[data-type]:not([data-type="none"]) {
  user-select: none;
}
.lms-sortable thead th[data-dir="asc"]::after  { content: " ▲"; font-size: .8em; opacity: .8; }
.lms-sortable thead th[data-dir="desc"]::after { content: " ▼"; font-size: .8em; opacity: .8; }

/* ================================
   LMS Courses Manager
   ================================ */
.lms-course-filter .input-group-text{
  border-width: 2px;
}
.lms-course-filter .form-control{
  border-width: 2px;
  font-weight: 500;
}
.lms-course-filter .form-control:focus{
  box-shadow: none;
}

/* ================================
   LMS Course Gallery (1200px max handled inline)
   ================================ */
.lms-course-card { overflow: hidden; }

.lms-course-thumb-wrap {
  background: rgba(255,255,255,0.03);
  border-bottom: 1px solid rgba(255,255,255,0.08);
}

.lms-course-thumb {
  width: 100%;
  height: 160px;
  object-fit: cover;
  display: block;
}

/* Make input-group/search match thick-outline look when used on courses pages */
.lms-search .input-group-text,
.lms-search .form-control {
  border-width: 2px;
}


/* ================================
   LMS Course Thumb Overlay Button
   ================================ */
.lms-thumb-overlay { position: relative; }

.lms-thumb-btn {
  position: absolute;
  top: 10px;
  right: 10px;
  border-width: 2px;
  padding: 0.15rem 0.35rem;
  line-height: 1;
  border-radius: 0.45rem;
  backdrop-filter: blur(6px);
}

.btn-xs {
  font-size: 0.72rem;
}

.lms-thumb-btn i {
  vertical-align: -0.1em;
}


/* ================================
   Course Card Image Overlay Button
   ================================ */
.lms-course-thumb-wrap { position: relative; }
.lms-course-thumb { width: 100%; display: block; border-radius: 4px; }
.lms-img-edit{
  position:absolute;
  top:6px;
  right:6px;
  padding:4px 6px;
  line-height:1;
  opacity:.85;
  border-radius:.45rem;
}
.lms-img-edit:hover{ opacity:1; }


/* ================================
   LMS Course Card Image Overlay
   ================================ */
.lms-course-thumb-wrap { position: relative; }
.lms-course-thumb {
  display:block;
  width:100%;
  height:180px;
  object-fit:cover;
  border-top-left-radius: 0.75rem;
  border-top-right-radius: 0.75rem;
}
.lms-img-edit{
  position:absolute;
  top:10px;
  right:10px;
  z-index:5;
  padding:.15rem .35rem;
  line-height:1;
  border-radius:.5rem;
  box-shadow:0 6px 18px rgba(0,0,0,.25);
}
.lms-img-edit i{ vertical-align:-0.125em; }

/* Match navbar thicker-outline feel on search inputs too */
.lms-search .input-group-text,
.lms-search .form-control{
  border-width:2px;
}

/* --- Course card image overlay edit button --- */
.lms-course-thumb-wrap { position: relative; }
.lms-thumb-edit{
  position:absolute;
  top:.5rem;
  right:.5rem;
  padding:.2rem .35rem;
  border-width:2px;
  border-radius:.45rem;
  backdrop-filter: blur(2px);
}
.lms-thumb-edit i{ vertical-align:-0.125em; }

/* === LMS COURSE IMAGE OVERLAY (auto) === */
.lms-course-thumb-wrap{
  position: relative;
  overflow: hidden;
}
.lms-course-thumb{
  display:block;
  width:100%;
  height:auto;
}
.lms-course-img-edit{
  position:absolute;
  top:.5rem;
  right:.5rem;
  z-index:10;
  padding:.25rem .45rem;
  line-height:1;
  border-width:2px; /* match thick-outline vibe */
  background: rgba(0,0,0,.25);
  backdrop-filter: blur(2px);
}
[data-theme="night"] .lms-course-img-edit{
  background: rgba(255,255,255,.10);
}

/* === LMS COURSE IMAGE CROPPING (auto) === */
/* Consistent “card cover” crop for all course images */
.lms-course-thumb-wrap{
  position: relative;
  overflow: hidden;
  border-top-left-radius: 0.75rem;
  border-top-right-radius: 0.75rem;
}

/* Fixed aspect ratio (adjust if you want taller/shorter thumbs) */
.lms-course-thumb-wrap{
  aspect-ratio: 16 / 9;
  background: rgba(0,0,0,.15);
}

/* Cover-crop */
.lms-course-thumb{
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
}

/* Slight zoom on hover (optional, subtle) */
.lms-course-card:hover .lms-course-thumb{
  transform: scale(1.01);
  transition: transform 120ms ease;
}

/* Keep overlay button visible above the crop */
.lms-course-img-edit{
  position: absolute;
  top: .5rem;
  right: .5rem;
  z-index: 10;
}

/* ================================
   Student Dashboard
   ================================ */
.object-fit-cover {
  object-fit: cover;
}

/* ================================
   LMS Modules Manager (Unit/Module UI)
   ================================ */
.lms-row-link:hover { background: rgba(255,255,255,0.04); }
.lms-checkline{
  display:flex; gap:.5rem; align-items:flex-start;
  padding:.35rem .5rem;
  border:1px solid rgba(255,255,255,0.12);
  border-radius:.5rem;
}
.lms-checkline input{ margin-top:.25rem; }

.lms-course-thumb-wrap{ position:relative; overflow:hidden; }
.lms-course-thumb{ width:100%; height:160px; object-fit:cover; object-position:center; display:block; }

/* Active unit pill in modules-manager */
.lms-navbar .lms-btn.active,
.lms-card .lms-btn.active {
  background-color: currentColor;
  color: #000;
}
[data-theme="night"] .lms-navbar .lms-btn.active,
[data-theme="night"] .lms-card .lms-btn.active {
  color: #111;
}

/* PATCH_FORCE_BOOTSTRAP_ICONS_VISIBLE */
.bi, i.bi {
  display: inline-block !important;
  font-family: bootstrap-icons !important;
  font-style: normal !important;
  font-weight: normal !important;
  line-height: 1 !important;
  vertical-align: middle !important;
}
.lms-btn .bi, .btn .bi {
  display: inline-block !important;
}
/* end PATCH_FORCE_BOOTSTRAP_ICONS_VISIBLE */

/* PATCH_FORCE_BOOTSTRAP_ICONS_FONT_AND_VISIBILITY */
.bi, i.bi, .btn .bi, .lms-btn .bi,
#viewToggleBtn .bi, #viewToggleBtn i.bi {
  display: inline-block !important;
  visibility: visible !important;
  opacity: 1 !important;
  color: currentColor !important;
  font-family: "bootstrap-icons" !important;
  font-style: normal !important;
  font-weight: 400 !important;
  font-size: 1.15em !important;
  line-height: 1 !important;
}


/* Permissions table — override the global currentColor for icon coloring */
.perm-tbl td i.bi.pi-full,
.perm-legend-item i.bi.pi-full   { color: #16a34a !important; font-size: 1.5rem !important; }
.perm-tbl td i.bi.pi-view,
.perm-legend-item i.bi.pi-view   { color: #2563eb !important; font-size: 1.4rem !important; }
.perm-tbl td i.bi.pi-hide,
.perm-legend-item i.bi.pi-hide   { color: #9ca3af !important; font-size: 1.35rem !important; }
.perm-tbl td i.bi.pi-ban,
.perm-legend-item i.bi.pi-ban    { color: #d1d5db !important; font-size: 1.3rem !important; }

/* ================================
   Breadcrumb Bar
   ================================ */
.lms-breadcrumb-bar {
  background: linear-gradient(90deg, var(--lms-card), var(--lms-bg));
  border-bottom: 1px solid var(--lms-border);
  padding: 6px 0;
  font-size: .78rem;
}
.lms-breadcrumb-bar .breadcrumb {
  font-size: .78rem;
  --bs-breadcrumb-divider: '›';
}
.lms-breadcrumb-bar .breadcrumb-item a {
  color: var(--lms-accent);
  text-decoration: none;
  transition: color .15s;
}
.lms-breadcrumb-bar .breadcrumb-item a:hover {
  color: #0b5ed7;
  text-decoration: underline;
}
.lms-breadcrumb-bar .breadcrumb-item.active {
  color: var(--lms-muted);
  font-weight: 500;
}
.lms-breadcrumb-bar .breadcrumb-item i.bi {
  font-size: .72rem;
  vertical-align: -1px;
}
/* Night mode */
html[data-theme="night"] .lms-breadcrumb-bar {
  background: linear-gradient(90deg, #1e1e2e, #181828);
  border-color: #2a2a3e;
}
html[data-theme="night"] .lms-breadcrumb-bar .breadcrumb-item a {
  color: #93c5fd;
}
html[data-theme="night"] .lms-breadcrumb-bar .breadcrumb-item.active {
  color: #888;
}


/* ================================
   Safari Image Hover Prevention
   ================================
   Safari shows a native giant preview tooltip on img hover.
   These rules suppress it globally. See: session-2026-03-30, catalog.php fix.
   Extended site-wide: session-2026-03-31.
*/
img {
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  user-select: none;
  pointer-events: none;
}
/* Restore pointer-events on images inside links / clickable containers */
a img, button img, [onclick] img, .clickable img {
  pointer-events: auto;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
}
