@charset "UTF-8"; // Variables $btn-size: 48px !default; $outline-color: #ffa300 !default; // Global box-sizing html { box-sizing: border-box; height: 100%; } *, *::before, *::after { box-sizing: inherit; } // Body layout body { display: flex; flex-direction: column; min-height: 100vh; margin: 0; padding: 0; font-family: 'Arial', sans-serif; line-height: 1.3; font-size: 18px; > header, > footer { flex: 0 0 auto; .coursenav-btn-navigation { width: $btn-size; height: $btn-size; padding: 0; border: none; background: none; display: flex; align-items: center; justify-content: center; color: inherit; position: relative; cursor: pointer; &:disabled { cursor: not-allowed; filter: opacity(0.5); } } } > main { flex: 1 0 auto; width: 100%; } } #coursenav-offcanvas { padding: 1em; width: 50%; } #coursenav-offcanvas-label { user-select: none; } #coursenav-navbar { .navbar-brand img { object-fit: contain; aspect-ratio: 1 / 1; height: 45px; } } // Menu styles .course-menu, .course-menu ul { list-style: none !important; margin: 0; padding: 0; } .course-menu { .witem { display: flex; width: 100%; flex-direction: row; > span { margin-left: auto; } } .menu-item { & + & { margin-top: 0.5rem; } } .coursenav-link { display: block; padding: 0.5rem 1rem; color: inherit; text-decoration: none; font-weight: 500; user-select: none; } .sub-ul { display: none; padding-left: 1rem; &.open { display: block; } .coursenav-link { cursor: pointer; &:hover { filter: invert(100%); } &[data-coursenavvisited='false'] { &::before { content: '\f023'; // unicode de fa-check font-family: 'Font Awesome 6 Pro'; font-weight: lighter; // solid display: inline-block; margin-right: 0.5rem; color: inherit; } } &[data-coursenavvisited='true'] { &::before { content: '\f00c'; // unicode de fa-check font-family: 'Font Awesome 6 Pro'; font-weight: 900; // solid display: inline-block; margin-right: 0.5rem; color: var(--bs-success); // verde éxito (puedes cambiar) } } } } .toggle-icon { cursor: pointer; margin-left: 0.5rem; color: inherit; } } // Mixin for control buttons (audio & toggler) @mixin control-button { width: $btn-size; height: $btn-size; padding: 0; border: none; background: none; display: flex; align-items: center; justify-content: center; color: inherit; position: relative; > svg { width: 100%; height: 100%; display: block; } > i { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } &:focus { outline: 2px solid $outline-color; outline-offset: 2px; } } // Apply mixin .controls-btn { @include control-button; // El contenedor interno debe ser relativo .position-relative { position: relative; width: 100%; height: 100%; } // Asegúrate que el SVG ocupe todo el área .position-relative svg { width: 100%; height: 100%; display: block; } // El ahora sí es absoluto dentro de .position-relative .position-relative i { /* position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); */ font-size: 2rem; } } .controls-btn { width: 55px; height: 100%; padding: 0; border: none; background: none; display: flex; align-items: center; justify-content: center; color: inherit; position: relative; border-top-left-radius: 0; border-bottom-left-radius: 0; } .font-custom { font-size: 2.5rem; } .navbar-toggler { @include control-button; .position-relative { position: relative; width: 100%; height: 100%; } .position-relative svg { width: 100%; height: 100%; display: block; } .position-relative i { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } } .disabled { pointer-events: none; animation: none; } .text-white * { color: #fff; } .page-sco { height: 100%; display: flex; flex-direction: column; position: relative; } .card.flat { margin: 0; padding: 0; border-radius: 0; border: none; box-shadow: none; background-color: transparent; .card-body { margin: 0; padding: 0; border-radius: 0; border: none; box-shadow: none; background-color: transparent; } } .cursor { cursor: pointer; } .wrap-course-adaptive { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; min-width: 100vw; min-height: 100vh; max-width: none; max-height: none; overflow: hidden; z-index: 0; background: inherit; } .wrap-course-content { width: 1366px; height: 768px; position: absolute; left: 0; top: 0; overflow: hidden; z-index: 1; // Puedes agregar box-shadow o background si quieres } #coursenav-offcanvas { border-top-right-radius: 30px !important; border-bottom-right-radius: 30px !important; } .footer-details { border-top-right-radius: 30px !important; border-bottom-right-radius: 30px !important; width: 100%; padding: 0% 0.5rem; } // Variables $color-bg: #433b3f !default; $color-line-bg: #ddd !default; $color-line-ac: #4caf50 !default; $color-white: #fff !default; $step-size: 24px !default; $step-current-size: 32px !default; $step-border-width: 4px !default; $transition-time: 0.3s !default; .stepper-container { width: 80%; max-width: 400px; } // Stepper principal .stepper { position: relative; display: flex; justify-content: space-between; align-items: center; padding: 1rem 0; // Línea de fondo &::before { content: ''; position: absolute; top: 50%; left: 0; right: 0; height: 4px; background: $color-line-bg; transform: translateY(-50%); border-radius: 2px; z-index: 0; } // Línea de progreso (width se asigna con --pct en JS) &::after { content: ''; position: absolute; top: 50%; left: 0; height: 4px; background: $color-line-ac; transform: translateY(-50%); border-radius: 2px; z-index: 1; width: var(--pct, 0); transition: width $transition-time ease; } .step { position: relative; z-index: 2; width: $step-size; height: $step-size; background: $color-line-bg; border-radius: 50%; display: flex; align-items: center; justify-content: center; transition: background $transition-time ease, width $transition-time ease, height $transition-time ease, top $transition-time ease; // Completado &.completed { background: $color-line-ac; } // Paso actual &.current { background: $color-line-ac; border: $step-border-width solid $color-white; width: $step-current-size; height: $step-current-size; // Elevar para centrar con el borde top: -(($step-current-size - $step-size) / 2); // Etiqueta de porcentaje &::before { content: attr(data-label); position: absolute; top: -2.5rem; left: 50%; transform: translateX(-50%); font-size: 1rem; color: $color-white; white-space: nowrap; } } } } #wrap-course-content-navigation { padding: 0.5rem; border-radius: 30px !important; border-bottom-left-radius: 0 !important; border-bottom-right-radius: 0 !important; /* transform: translateY(-1rem); */ button { margin-left: 0.33rem; margin-right: 0.33rem; padding: 0; border: none; box-shadow: none; background: none; } } #wrap-course-paginator { justify-self: end; margin-left: auto; border-top-left-radius: 20px; border-bottom-left-radius: 20px; padding: 0% 0.5rem; width: 120px; justify-content: center; } #wrap-course-controls { width: 40%; } #coursenav-main-content { height: 100%; overflow-x: hidden; } .stepper { #step-movil { background: #4caf50; border: 4px solid #fff; width: 32px; height: 32px; top: 12px; position: absolute; border-radius: 50%; display: flex; align-items: center; justify-content: center; transition: all 0.3s ease; z-index: 4; } #step-movil::before { content: attr(data-label); position: absolute; top: 1.9rem; left: 50%; transform: translateX(-50%); font-size: 0.8rem; color: #fff; white-space: nowrap; } } .coursenav-btn-navigation:disabled { cursor: not-allowed; filter: opacity(0.5); pointer-events: none; } .offcanvas-backdrop { width: 100%; height: 100%; } .pop_class { width: 100%; max-width: 1000px; padding: 0; border-radius: 1em; overflow: hidden; .swal2-html-container { padding: 0; } .img-fit-pop { object-fit: cover; height: 100%; width: 100%; } .swal2-close { width: 50px; height: 50px; border-radius: 50%; } } h6 { color: #4c4c4c; font-weight: bold; font-size: 14px; } .pop_html_style .swal2-html-container { padding: 0.5em; }