231 lines
5.2 KiB
CSS
231 lines
5.2 KiB
CSS
/* ==========================
|
||
Allgemeines Layout
|
||
========================== */
|
||
:root {
|
||
--mb-z-index: 2000 !important;
|
||
--mantine-z-index-popover: 2100 !important;
|
||
--mantine-z-index-overlay: 2999 !important;
|
||
--mantine-z-index-dropdown: 2100 !important;
|
||
--mantine-z-index-max: 9999 !important;
|
||
--mantine-z-index-modal: 3000 !important;
|
||
}
|
||
body {
|
||
margin: 0;
|
||
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
|
||
background-color: #f8f9fa;
|
||
padding-top: 60px; /* Platz für den fixen Header schaffen */
|
||
}
|
||
|
||
/* page-content (rechts neben der Sidebar) */
|
||
.page-content {
|
||
flex: 1 1 0%;
|
||
padding: 20px;
|
||
min-width: 0; /* verhindert Überlauf bei zu breitem Inhalt */
|
||
transition: margin-left 0.3s ease;
|
||
min-height: calc(100vh - 60px); /* Mindesthöhe minus Header-Höhe */
|
||
margin-left: 220px; /* <--- Ergänzen */
|
||
}
|
||
|
||
/* Wenn Sidebar collapsed ist, reduziere margin-left */
|
||
.sidebar.collapsed ~ .page-content {
|
||
margin-left: 70px;
|
||
}
|
||
|
||
/* ==========================
|
||
Header
|
||
========================== */
|
||
.app-header {
|
||
position: fixed;
|
||
top: 0;
|
||
left: 0;
|
||
height: 60px;
|
||
width: 100%;
|
||
background-color: #e4d5c1;
|
||
color: #7c5617;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
padding: 0 20px;
|
||
z-index: 1100;
|
||
box-shadow: 0 2px 4px rgba(0,0,0,0.2);
|
||
}
|
||
|
||
.logo {
|
||
height: 40px;
|
||
margin-right: 10px;
|
||
}
|
||
|
||
.app-title {
|
||
font-size: 1.5rem;
|
||
font-weight: bold;
|
||
}
|
||
|
||
.org-name {
|
||
font-size: 1rem;
|
||
color: #7c5617;
|
||
}
|
||
|
||
.header-right {
|
||
display: flex;
|
||
align-items: center;
|
||
}
|
||
|
||
/* ==========================
|
||
Sidebar
|
||
========================== */
|
||
.sidebar {
|
||
width: 220px;
|
||
transition: width 0.3s ease;
|
||
background-color: #e4d5c1;
|
||
color: black;
|
||
height: calc(100vh - 60px); /* Höhe minus Header */
|
||
top: 60px; /* Den gleichen Wert wie Header-Höhe verwenden */
|
||
left: 0;
|
||
z-index: 1000;
|
||
position: fixed; /* <--- Ändere das von relative zu fixed */
|
||
overflow-x: hidden;
|
||
overflow-y: auto;
|
||
}
|
||
|
||
.sidebar.collapsed {
|
||
width: 70px;
|
||
}
|
||
|
||
/* Sidebar Toggle Button (Burger-Icon) */
|
||
.sidebar-toggle {
|
||
text-align: right;
|
||
padding: 5px 10px;
|
||
}
|
||
|
||
.toggle-button {
|
||
background: none;
|
||
border: none;
|
||
color: #7c5617;
|
||
cursor: pointer;
|
||
font-size: 1.2rem;
|
||
transition: transform 0.1s ease, background-color 0.2s ease;
|
||
padding: 8px;
|
||
border-radius: 4px;
|
||
}
|
||
|
||
.toggle-button:hover {
|
||
background-color: #7c5617;
|
||
color: #e4d5c1;
|
||
transform: scale(1.05);
|
||
}
|
||
|
||
.toggle-button:active {
|
||
transform: scale(0.95);
|
||
}
|
||
|
||
/* Navigation in der Sidebar */
|
||
.sidebar-nav .nav-link {
|
||
color: #7c5617;
|
||
padding: 10px 15px;
|
||
display: flex;
|
||
align-items: center;
|
||
border-radius: 4px;
|
||
margin: 2px 8px;
|
||
transition: background-color 0.2s ease, color 0.2s ease;
|
||
}
|
||
|
||
.sidebar-nav .nav-link:hover {
|
||
background-color: #7c5617;
|
||
color: #e4d5c1;
|
||
}
|
||
|
||
.sidebar-nav .nav-link.active {
|
||
background-color: #7c5617;
|
||
color: #e4d5c1;
|
||
}
|
||
|
||
/* Text neben Icons */
|
||
.sidebar-label {
|
||
display: inline-block;
|
||
margin-left: 10px;
|
||
white-space: nowrap;
|
||
transition: opacity 0.3s ease, width 0.3s ease;
|
||
}
|
||
|
||
/* Wenn Sidebar collapsed ist, blendet das Label aus */
|
||
.sidebar.collapsed .sidebar-label {
|
||
opacity: 0;
|
||
width: 0;
|
||
overflow: hidden;
|
||
}
|
||
|
||
/* Tooltips (Bootstrap-Tooltips) */
|
||
.tooltip {
|
||
z-index: 2000;
|
||
background-color: #7c5617;
|
||
color: #e4d5c1;
|
||
}
|
||
|
||
/* Optional: Tooltips nur anzeigen, wenn Sidebar collapsed ist */
|
||
/* Da dash-bootstrap-components Tooltips in einen anderen DOM-Layer rendert,
|
||
kann man bei Bedarf per Callback steuern, ob sie geöffnet sind oder nicht.
|
||
Dieser Block ist nur ein Zusatz – das Haupt-Show/Hiding erfolgt per
|
||
is_open-Callback. */
|
||
.sidebar:not(.collapsed) ~ .tooltip {
|
||
display: none !important;
|
||
}
|
||
|
||
/* ==========================
|
||
Responsive (bei Bedarf)
|
||
========================== */
|
||
/* @media (max-width: 768px) {
|
||
body {
|
||
padding-top: 60px; /* Header-Platz auch auf mobilen Geräten */
|
||
/* }
|
||
|
||
.sidebar {
|
||
position: fixed;
|
||
height: calc(100vh - 60px);
|
||
z-index: 1050;
|
||
}
|
||
|
||
.page-content {
|
||
margin-left: 0;
|
||
}
|
||
|
||
.sidebar.collapsed {
|
||
width: 0;
|
||
}
|
||
|
||
.sidebar.collapsed ~ .page-content {
|
||
margin-left: 0;
|
||
}
|
||
} */
|
||
|
||
.mantine-Modal-modal {
|
||
z-index: var(--mantine-z-index-modal, 3000) !important;
|
||
}
|
||
|
||
.mantine-Modal-inner,
|
||
.mantine-Modal-content {
|
||
z-index: 4000 !important;
|
||
}
|
||
|
||
/* Sidebar collapsed: Icon-Farbe normal */
|
||
.sidebar.collapsed .sidebar-item-collapsed svg {
|
||
color: #7c5617; /* Icon-Linie/Text */
|
||
fill: #e4d5c1; /* Icon-Fläche */
|
||
width: 24px;
|
||
height: 24px;
|
||
margin: 0 auto;
|
||
display: block;
|
||
transition: color 0.2s, fill 0.2s;
|
||
}
|
||
|
||
/* Sidebar collapsed: Hintergrund und Icon invertieren bei Hover/Active */
|
||
.sidebar.collapsed .nav-link:hover,
|
||
.sidebar.collapsed .nav-link.active {
|
||
background-color: #7c5617 !important;
|
||
}
|
||
|
||
.sidebar.collapsed .nav-link:hover svg,
|
||
.sidebar.collapsed .nav-link.active svg {
|
||
color: #e4d5c1; /* Icon-Linie/Text invertiert */
|
||
fill: #7c5617; /* Icon-Fläche invertiert */
|
||
}
|