// file: kb_app/frontend/sass/_app.scss $app-header-height: 48px; $app-footer-height: 48px; $sidenav-base-width: 260px; html, body { height: 100%; overflow: hidden; } body { min-height: 100vh; } #ibackground { position: fixed; top: 0; left: 0; min-width: 100%; min-height: 100%; width: auto; height: auto; z-index: 1; object-fit: cover; } #vbackground { position: fixed; top: 0; left: 0; min-width: 100%; min-height: 100%; width: auto; height: auto; z-index: 2; object-fit: cover; } video#vbackground:not([playsinline]) { display: none; } .app-header { position: fixed; top: 0; left: 0; right: 0; height: $app-header-height; z-index: 1030; & nav { border-top: none !important; border-left: none !important; border-right: none !important; border-bottom: 3px $primary solid !important; border-top-left-radius: 0 !important; border-top-right-radius: 0 !important; border-bottom-left-radius: 15px 150px; border-bottom-right-radius: 75px 25px; } } .app-footer { position: fixed; bottom: 0; left: 0; right: 0; height: $app-footer-height; z-index: 1020; border-style: solid; border-width: 2px 0 0; border-top-left-radius: 255px 25px; border-top-right-radius: 25px 225px; } .app-main { position: relative; height: calc(100vh - $app-header-height - $app-footer-height); // plein viewport margin-top: $app-header-height; margin-bottom: $app-footer-height; box-sizing: border-box; overflow: hidden; // pas de scroll ici z-index: 500; } .app-main-error { position: relative; height: 100vh; // plein viewport padding-top: $app-header-height; padding-bottom: $app-footer-height; box-sizing: border-box; overflow: hidden; // pas de scroll ici background: linear-gradient(135deg, #9945ff 0%, #764ba2 100%); color: white; display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 100vh; z-index: 501; } .app-main-error-content { width: 100%; & h1 { font-size: 4rem; margin: 0; text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.3); } & p { font-size: 1.5rem; margin: 1rem 0 2rem; } } .app-logo { height: 42px; width: auto; display: block; } #app-dashbord { display: flex; height: 100%; //height: calc(100vh - var(--app-header-height) - var(--app-footer-height)); } #app-dashbord-sidenav { flex-basis: $sidenav-base-width; flex-shrink: 0; transition: transform 0.15s ease-in-out; &[dir="ltr"] { transform: translateX(-$sidenav-base-width); } &[dir="rtl"] { transform: translateX($sidenav-base-width); } } #app-dashbord-main { position: relative; display: flex; flex-direction: column; min-width: 0; flex-grow: 1; min-height: 100%; &[dir="ltr"] { margin-left: -$sidenav-base-width; } &[dir="rtl"] { margin-right: -$sidenav-base-width; } } // quand body a la classe .sidenav-toggled .sidenav-toggled { #app-dashbord-sidenav { transform: translateX(0); } #app-dashbord-main { &:before { content: ""; display: block; position: absolute; inset: 0; background: #000; opacity: 0.5; transition: opacity 0.3s ease-in-out; } } } // breakpoint desktop : sidebar visible par défaut @include media-breakpoint-up(lg) { #app-dashbord-sidenav { transform: translateX(0); } #app-dashbord-main { margin-left: 0; margin-right: 0; transition: margin 0.15s ease-in-out; } .sidenav-toggled { #app-dashbord-sidenav { &[dir="ltr"] { transform: translateX(-$sidenav-base-width); } &[dir="rtl"] { transform: translateX($sidenav-base-width); } } #app-dashbord-main { &[dir="ltr"] { margin-left: -$sidenav-base-width; } &[dir="rtl"] { margin-right: -$sidenav-base-width; } &:before { display: none; } } } } // ------------------------------------------------------------------ // Sidebar (style SBAdmin-ish) // ------------------------------------------------------------------ .app-sidebar.sidenav { display: flex; flex-direction: column; height: 100%; flex-wrap: nowrap; background-color: rgb(97, 53, 131, 0.7); color: #fff; } .sidenav-menu { flex-grow: 1; .nav { flex-direction: column; flex-wrap: nowrap; } .sidenav-menu-heading { padding: 1.5rem 1rem 0.75rem; font-size: 0.75rem; font-weight: bold; text-transform: uppercase; color: rgba(255, 255, 255, 0.5); } .nav-link { display: flex; align-items: center; padding: 0.75rem 1.25rem; color: rgba(255, 255, 255, 0.8); position: relative; &:hover, &.active { color: #fff; background: rgba(255, 255, 255, 0.08); } .nav-link-icon { font-size: 0.9rem; margin-right: 0.5rem; } .sidenav-collapse-arrow { margin-left: auto; transition: transform 0.15s ease; } &.collapsed { .sidenav-collapse-arrow { transform: rotate(-90deg); } } } .sidenav-menu-nested { margin-left: 1.5rem; flex-direction: column; } } .osb-scrollable { height: 100%; // occupe toute la hauteur de .app-main max-height: 100%; // évite de dépasser // Pour vérifier sans OverlayScrollbars : // } .hero { padding: 2rem; background: white; } .modal { z-index: 1080; } .modal-backdrop { z-index: -1; } .voice-output-textarea { min-height: 320px; resize: vertical; font-size: 1.05rem; line-height: 1.5; } #logs-card { transition: opacity 0.15s ease-in-out; }