Integrate project building structure

This commit is contained in:
Julian Appel 2026-09-27 10:45:10 +02:00
commit 868f48e7ac
44 changed files with 5898 additions and 377 deletions

View file

@ -220,7 +220,7 @@ a {
--bs-alert-border-color: #205a38;
}
/* ── App-Shell / Seitenleiste (nur auf der Projektseite) ────────────────── */
/* ── App-Shell / Seitenleiste (alle Seiten außer der Seitenansicht) ──── */
.app-shell {
display: grid;
@ -1861,3 +1861,144 @@ a.kpi:hover {
.sidebar-collapsed .sidebar-label {
display: none;
}
/* ── Gebäudestruktur (Gebäude → Etagen → Räume) ─────────────────────── */
.structure-columns {
display: grid;
grid-template-columns: minmax(0, 1fr);
gap: var(--space-md);
align-items: start;
}
@media (min-width: 992px) {
.structure-columns {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
}
.structure-column-title {
font-size: 1rem;
font-weight: 700;
margin: 0;
display: flex;
align-items: center;
}
.structure-icon-button {
display: inline-flex;
align-items: center;
justify-content: center;
padding: 0.25rem 0.4rem;
line-height: 1;
}
.structure-back-link {
display: inline-flex;
align-items: center;
justify-content: center;
padding: 0.35rem 0.45rem;
margin-top: 0.1rem;
}
.structure-list {
max-height: 70vh;
overflow-y: auto;
}
.structure-entry {
display: flex;
align-items: center;
gap: var(--space-sm);
padding: 0;
}
.structure-entry-main {
flex: 1 1 auto;
min-width: 0;
display: flex;
align-items: center;
justify-content: space-between;
gap: var(--space-sm);
padding: 0.55rem 0.75rem;
border: 0;
background: transparent;
color: inherit;
text-align: left;
font: inherit;
}
button.structure-entry-main {
cursor: pointer;
}
button.structure-entry-main:hover {
background: var(--surface-hover);
}
button.structure-entry-main:focus-visible {
outline: 2px solid var(--accent-blue);
outline-offset: -2px;
}
.structure-entry.is-selected {
background: var(--surface-selected);
box-shadow: inset 3px 0 0 var(--color-signal);
}
.structure-entry.is-selected .structure-entry-label {
font-weight: 600;
}
.structure-entry.is-selected button.structure-entry-main:hover {
background: transparent;
}
.structure-entry-text {
min-width: 0;
display: flex;
flex-direction: column;
}
.structure-entry-label {
overflow-wrap: anywhere;
}
.structure-entry-hint {
font-size: 0.78rem;
color: var(--color-ink-soft);
}
.structure-entry-meta {
flex: 0 0 auto;
font-size: 0.78rem;
color: var(--color-ink-soft);
white-space: nowrap;
}
.structure-entry-actions {
flex: 0 0 auto;
display: inline-flex;
gap: 4px;
padding-right: 0.75rem;
}
.structure-room-number {
font-weight: 600;
font-variant-numeric: tabular-nums;
}
.structure-group-label {
font-size: 0.66rem;
letter-spacing: 0.08em;
text-transform: uppercase;
font-weight: 600;
color: var(--color-accent);
background: var(--panel-bg-subtle);
padding: 0.35rem 0.75rem;
}
.structure-empty {
color: var(--color-ink-soft);
font-size: 0.9rem;
}