:root {
    --bg-base: #121019;
    --bg-surface: #1a1625;
    --bg-elevated: #242033;
    --border-line: rgba(212, 175, 55, 0.22);
    --border-line-strong: rgba(212, 175, 55, 0.38);
    --text-primary: #fafafa;
    --text-secondary: #d4cadf;
    --text-muted: #9f94b0;
    --accent: #d4af37;
    --accent-hover: #b8942d;
    --accent-soft: rgba(212, 175, 55, 0.14);
    --accent-on: #1a1208;
    --danger: #ef476f;
    --surface: var(--bg-surface);
    --surface-2: var(--bg-elevated);
    --border: var(--border-line);
    --muted: var(--text-muted);
    --text: var(--text-primary);
    --shadow-sm: 0 10px 30px rgba(0, 0, 0, 0.12);
}

:root[data-theme="light"] {
    --bg-base: #f4f4f5;
    --bg-surface: #ffffff;
    --bg-elevated: #f1f5f9;
    --border-line: #d4d4d8;
    --border-line-strong: #a1a1aa;
    --text-primary: #18181b;
    --text-secondary: #52525b;
    --text-muted: #71717a;
    --accent: #5e04b7;
    --accent-hover: #4c0394;
    --accent-soft: rgba(94, 4, 183, 0.12);
    --accent-on: #ffffff;
}

* { box-sizing: border-box; }

body {
    margin: 0;
    background: var(--bg-base);
    background-image: radial-gradient(circle at 1px 1px, rgba(255,255,255,0.035) 1px, transparent 0);
    background-size: 32px 32px;
    color: var(--text-primary);
    font-family: "Segoe UI", system-ui, -apple-system, sans-serif;
}

:root[data-theme="light"] body {
    background-image: radial-gradient(circle at 1px 1px, rgba(24,24,27,0.05) 1px, transparent 0);
}

.login-page {
    display: grid;
    min-height: 100vh;
    place-items: center;
    padding: 1.5rem;
}
.login-card {
    width: min(460px, 100%);
    border: 1px solid var(--border-line);
    border-radius: 8px;
    background: var(--bg-surface);
    box-shadow: 0 24px 70px rgba(0, 0, 0, 0.35);
}
.login-brand { border-bottom: 1px solid var(--border-line); }

a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; }

.app-shell { display: flex; flex-direction: column; min-height: 100vh; }
.font-mono { font-family: "Cascadia Mono", "Consolas", monospace; }
.accent { color: var(--accent); }
.small { font-size: 0.78rem; }
.muted { color: var(--text-muted); font-size: 0.78rem; }
.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    padding: 0;
    border: 0;
    margin: -1px;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
}
.label-caps {
    color: var(--text-secondary);
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.17em;
    text-transform: uppercase;
}

:root[data-theme="light"] .topbar {
    background: rgba(255, 255, 255, 0.94);
}

.brand {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    align-items: flex-start;
    padding: 1.1rem 1rem;
    border-bottom: 1px solid var(--border-line);
}
.brand-logo {
    width: 100%;
}
.brand-logo-img {
    display: block;
    width: 100%;
    max-width: 180px;
    height: auto;
    border-radius: 6px;
}
.brand-logo-light {
    display: none;
}
:root[data-theme="light"] .brand-logo-dark {
    display: none;
}
:root[data-theme="light"] .brand-logo-light {
    display: block;
}
.brand-mark {
    display: grid;
    place-items: center;
    width: 48px;
    height: 36px;
    border-radius: 4px;
    background: #fff;
    color: #111;
    font-weight: 800;
}

.brand-title { font-size: 1rem; font-weight: 700; line-height: 1.15; }
.app-nav {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem;
    max-width: 1680px;
    margin: 0 auto;
    padding: 0 2rem 0.7rem;
}
.nav-link {
    position: relative;
    display: inline-flex;
    flex: 0 0 auto;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 0.85rem;
    border-radius: 999px;
    color: var(--text-secondary);
    font-size: 0.85rem;
    white-space: nowrap;
}
.nav-link[href="/?action=chat"]::after,
.nav-link[href="/?action=notes"]::after,
.nav-link[href="/?action=projekte"]::after {
    position: absolute;
    top: 2px;
    right: 2px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 16px;
    height: 16px;
    padding: 0 0.3rem;
    border-radius: 999px;
    background: var(--accent);
    color: var(--accent-on);
    font-size: 0.6rem;
    font-weight: 800;
    line-height: 1;
}
.nav-link:hover {
    background: var(--bg-elevated);
    color: var(--text-primary);
}
.nav-link.active {
    background: var(--accent-soft);
    color: var(--text-primary);
}
.nav-icon {
    display: inline-grid;
    place-items: center;
    width: 18px;
    min-width: 18px;
    font-size: 1rem;
}
.nav-group {
    position: relative;
    display: inline-flex;
    flex: 0 0 auto;
    align-items: center;
}
.nav-group-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    margin-left: -0.3rem;
    padding: 0;
    border: 0;
    border-radius: 999px;
    background: transparent;
    color: var(--text-muted);
    font-size: 0.6rem;
    cursor: pointer;
}
.nav-group-toggle:hover {
    background: var(--bg-elevated);
    color: var(--text-primary);
}
.nav-group-menu {
    position: absolute;
    z-index: 55;
    top: calc(100% + 0.5rem);
    left: 0;
    display: none;
    min-width: 200px;
    padding: 0.4rem;
    border: 1px solid var(--border-line);
    border-radius: 10px;
    background: var(--bg-surface);
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.36);
}
.nav-group.open .nav-group-menu {
    display: grid;
    gap: 0.15rem;
}
.nav-group-item.nav-link {
    width: 100%;
    border-radius: 6px;
}

.user-menu {
    position: relative;
}
.user-menu-trigger {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.25rem 0.4rem;
    border: 1px solid transparent;
    border-radius: 999px;
    background: transparent;
    color: var(--text-secondary);
    cursor: pointer;
}
.user-menu-trigger:hover {
    background: var(--bg-elevated);
    border-color: var(--border-line);
}
.user-menu-caret {
    font-size: 0.65rem;
    color: var(--text-muted);
}
.user-menu-avatar {
    width: 30px;
    height: 30px;
    border-radius: 999px;
    object-fit: cover;
    border: 2px solid color-mix(in srgb, var(--accent) 40%, transparent);
}
.user-menu-panel {
    position: absolute;
    z-index: 60;
    top: calc(100% + 0.7rem);
    right: 0;
    display: none;
    width: 260px;
    padding: 0.6rem;
    border: 1px solid var(--border-line);
    border-radius: 10px;
    background: var(--bg-surface);
    box-shadow: 0 24px 70px rgba(0, 0, 0, 0.36);
}
.user-menu.open .user-menu-panel {
    display: block;
}
.user-menu-profile {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.5rem;
    border-radius: 6px;
    color: var(--text-primary);
}
.user-menu-profile:hover {
    background: var(--bg-elevated);
}
.user-menu-profile .user-menu-avatar {
    width: 42px;
    height: 42px;
}
.user-menu-info {
    display: flex;
    min-width: 0;
    flex-direction: column;
    gap: 0.25rem;
}
.user-menu-email {
    overflow: hidden;
    max-width: 170px;
    font-weight: 600;
    font-size: 0.85rem;
    white-space: nowrap;
    text-overflow: ellipsis;
}
.user-menu-divider {
    height: 1px;
    margin: 0.5rem 0;
    background: var(--border-line);
}
.user-menu-item {
    display: flex;
    width: 100%;
    align-items: center;
    justify-content: space-between;
    padding: 0.55rem 0.6rem;
    border: 0;
    border-radius: 6px;
    background: transparent;
    color: var(--text-secondary);
    font-size: 0.85rem;
    text-align: left;
    cursor: pointer;
}
.user-menu-item:hover {
    background: var(--bg-elevated);
    color: var(--text-primary);
}
.theme-toggle-knob {
    position: relative;
    display: block;
    width: 32px;
    height: 18px;
    border-radius: 999px;
    background: var(--accent);
}
.theme-toggle-knob::after {
    content: "";
    position: absolute;
    top: 3px;
    left: 3px;
    width: 12px;
    height: 12px;
    border-radius: 999px;
    background: #fff;
    transition: transform 0.18s ease;
}
:root[data-theme="light"] .theme-toggle-knob::after {
    transform: translateX(14px);
}
.status-dot-row { display: flex; gap: 0.45rem; align-items: center; margin-top: 0.35rem; }
.status-dot { width: 7px; height: 7px; border-radius: 99px; background: #10b981; }

.main {
    flex: 1;
    min-width: 0;
    width: 100%;
    padding: 1.4rem 2rem 2rem;
    max-width: 1680px;
    margin: 0 auto;
}
.app-header {
    position: sticky;
    top: 0;
    z-index: 40;
    border-bottom: 1px solid var(--border-line);
    background: color-mix(in srgb, var(--bg-surface) 92%, transparent);
    backdrop-filter: blur(12px);
}
:root[data-theme="light"] .app-header {
    background: rgba(255, 255, 255, 0.94);
}
.app-header-top {
    display: flex;
    align-items: center;
    gap: 1rem;
    max-width: 1680px;
    margin: 0 auto;
    padding: 0.8rem 2rem;
}
.app-header-brand {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
}
.app-header-brand .brand-logo-img {
    width: auto;
    max-width: 150px;
    height: 30px;
    object-fit: contain;
}
.app-header-actions {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    gap: 0.7rem;
    margin-left: auto;
}
.app-switch-btn {
    padding: 0.42rem 0.85rem;
    font-size: 0.78rem;
    font-weight: 600;
    white-space: nowrap;
}
.global-search {
    flex: 1;
    min-width: 0;
    max-width: 460px;
}
.notification-menu {
    position: relative;
}
.notification-trigger {
    position: relative;
}
.notification-dot {
    position: absolute;
    top: 4px;
    right: 4px;
    width: 7px;
    height: 7px;
    border-radius: 99px;
    background: #ef4444;
}
.notification-panel {
    position: absolute;
    z-index: 60;
    top: calc(100% + 0.7rem);
    right: 0;
    display: none;
    width: min(420px, calc(100vw - 2rem));
    max-height: 520px;
    overflow: auto;
    border: 1px solid var(--border-line);
    border-radius: 6px;
    background: var(--bg-surface);
    box-shadow: 0 24px 70px rgba(0, 0, 0, 0.36);
}
.notification-menu.open .notification-panel {
    display: block;
}
.notification-head,
.notification-actions {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.85rem 1rem;
    border-bottom: 1px solid var(--border-line);
}
.notification-actions {
    justify-content: flex-start;
}
.notification-actions button {
    border: 0;
    background: transparent;
    color: var(--accent);
    cursor: pointer;
}
.notification-actions button:last-child {
    color: #f87171;
}
.notification-list {
    display: grid;
}
.notification-item {
    display: grid;
    gap: 0.35rem;
    padding: 1rem;
    border-bottom: 1px solid var(--border-line);
    color: var(--text-secondary);
}
.notification-item:hover {
    background: var(--bg-elevated);
    color: var(--text-primary);
}
.notification-item strong {
    color: var(--text-primary);
}
.notification-body {
    margin: 0;
    color: var(--text-secondary);
    font-size: 0.85rem;
    overflow-wrap: break-word;
}
.notification-item small {
    color: var(--text-muted);
}
.notification-empty {
    padding: 1rem;
    color: var(--text-muted);
}

.topbar {
    position: sticky;
    top: 0;
    z-index: 5;
    display: flex;
    gap: 0.75rem;
    align-items: center;
    padding: 0.8rem 0 1.2rem;
    background: rgba(20, 23, 27, 0.88);
    backdrop-filter: blur(12px);
}
.search-form { display: flex; gap: 0.6rem; align-items: center; flex: 1; }

.field-input {
    width: 100%;
    padding: 0.65rem 0.85rem;
    border: 1px solid var(--border-line);
    border-radius: 4px;
    background: #15191e;
    color: var(--text-primary);
}
.field-input::placeholder {
    color: #aab2bd;
    opacity: 1;
}
:root[data-theme="light"] .field-input {
    background: #ffffff;
}
:root[data-theme="light"] .field-input::placeholder {
    color: #71717a;
}
.field-input:focus {
    outline: none;
    border-color: var(--accent);
    box-shadow: 0 0 0 3px var(--accent-soft);
}

.btn, .icon-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.45rem;
    min-height: 40px;
    padding: 0.58rem 0.9rem;
    border: 1px solid transparent;
    border-radius: 7px;
    font-weight: 600;
    line-height: 1.2;
    cursor: pointer;
    white-space: nowrap;
    transition: background-color 160ms ease, border-color 160ms ease, color 160ms ease, box-shadow 160ms ease, transform 160ms ease;
}

/* Sicherheit & Compliance */
.security-intro {
    align-items: flex-end;
}
.security-health-badge {
    display: inline-flex;
    align-items: center;
    gap: 0.55rem;
    padding: 0.55rem 0.75rem;
    border: 1px solid var(--border-line);
    border-radius: 999px;
    background: var(--bg-surface);
    color: var(--text-secondary);
    font-size: 0.78rem;
    font-weight: 700;
}
.security-health-badge > span {
    width: 0.55rem;
    height: 0.55rem;
    border-radius: 50%;
    background: #22c55e;
    box-shadow: 0 0 0 4px rgba(34, 197, 94, 0.12);
}
.security-subnav {
    display: flex;
    gap: 0.3rem;
    overflow-x: auto;
    margin: -0.15rem 0 1rem;
    padding: 0.35rem;
    border: 1px solid var(--border-line);
    border-radius: 8px;
    background: var(--bg-surface);
    scrollbar-width: thin;
}
.security-subnav a {
    flex: 0 0 auto;
    padding: 0.55rem 0.75rem;
    border-radius: 6px;
    color: var(--text-secondary);
    font-size: 0.82rem;
    font-weight: 650;
}
.security-subnav a:hover,
.security-subnav a:focus-visible {
    background: var(--bg-elevated);
    color: var(--text-primary);
}
.security-subnav a.active {
    background: var(--accent-soft);
    color: var(--text-primary);
}
.security-status-list {
    padding-bottom: 0;
}
.security-status-row {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    gap: 0.9rem;
    align-items: center;
    padding: 0.9rem 0;
    border-top: 1px solid var(--border-line);
}
.security-status-row > div {
    display: grid;
    gap: 0.2rem;
}
.security-status-row > div span {
    color: var(--text-muted);
    font-size: 0.8rem;
}
.security-status-icon {
    display: inline-grid;
    place-items: center;
    width: 2rem;
    height: 2rem;
    border-radius: 50%;
    font-weight: 800;
}
.security-status-icon.is-ok {
    background: rgba(34, 197, 94, 0.13);
    color: #4ade80;
}
.security-status-icon.is-warning {
    background: rgba(245, 158, 11, 0.13);
    color: #fbbf24;
}
.security-filterbar {
    display: grid;
    grid-template-columns: minmax(240px, 1.6fr) minmax(150px, 0.7fr) minmax(150px, 0.7fr) auto;
    gap: 0.6rem;
    margin-bottom: 1rem;
}
.security-audit-table td {
    vertical-align: top;
}
.security-audit-table td > span,
.security-permission-table td:first-child > span,
.security-token-list span > small,
.security-token-list span > code {
    display: block;
    margin-top: 0.18rem;
}
.security-state {
    display: inline-flex;
    padding: 0.25rem 0.5rem;
    border-radius: 999px;
    background: var(--bg-elevated);
    color: var(--text-secondary);
    font-size: 0.72rem;
    font-weight: 750;
}
.security-state-success {
    background: rgba(34, 197, 94, 0.12);
    color: #4ade80;
}
.security-role-switch {
    display: inline-flex;
    gap: 0.2rem;
    margin-bottom: 1rem;
    padding: 0.25rem;
    border-radius: 7px;
    background: var(--bg-elevated);
}
.security-role-switch a {
    padding: 0.48rem 0.75rem;
    border-radius: 5px;
    color: var(--text-secondary);
    font-size: 0.8rem;
    font-weight: 700;
}
.security-role-switch a.active {
    background: var(--bg-surface);
    color: var(--text-primary);
    box-shadow: var(--shadow-sm);
}
.security-permission-table th:not(:first-child),
.security-permission-table td:not(:first-child) {
    min-width: 88px;
    text-align: center;
}
.permission-check {
    display: inline-grid;
    cursor: pointer;
}
.permission-check input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}
.permission-check span {
    display: grid;
    place-items: center;
    width: 1.7rem;
    height: 1.7rem;
    border: 1px solid var(--border-line-strong);
    border-radius: 5px;
    color: transparent;
}
.permission-check input:checked + span {
    border-color: var(--accent);
    background: var(--accent-soft);
    color: var(--accent);
}
.permission-check input:focus-visible + span {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
}
.security-2fa-layout {
    display: grid;
    grid-template-columns: minmax(260px, 0.8fr) minmax(340px, 1.2fr);
    gap: 2rem;
    align-items: start;
}
.security-2fa-copy {
    display: flex;
    gap: 1rem;
    align-items: flex-start;
}
.security-2fa-copy h2,
.security-api-docs h2 {
    margin-top: 0;
}
.security-2fa-copy p {
    max-width: 48ch;
    color: var(--text-secondary);
    line-height: 1.55;
}
.security-secret-panel {
    margin-bottom: 1rem;
    padding: 1rem;
    border: 1px solid rgba(245, 158, 11, 0.42);
    border-radius: 8px;
    background: rgba(245, 158, 11, 0.08);
}
.security-secret-panel > strong,
.security-secret-panel > label {
    display: block;
    margin-bottom: 0.65rem;
}
.security-secret-panel code {
    display: block;
    margin-top: 0.35rem;
    padding: 0.6rem;
    overflow-wrap: anywhere;
    border-radius: 5px;
    background: var(--bg-base);
    color: var(--text-primary);
}
.security-code-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.45rem;
    margin: 0.8rem 0;
}
.security-code-grid code {
    text-align: center;
}
.security-code-input {
    max-width: 18rem;
    font-family: "Cascadia Mono", "Consolas", monospace;
    font-size: 1.15rem;
    letter-spacing: 0.18em;
}
.security-inline-form,
.security-danger-line {
    display: flex;
    gap: 0.65rem;
    align-items: flex-end;
    flex-wrap: wrap;
}
.security-setup-steps {
    display: grid;
    gap: 0.8rem;
}
.security-setup-steps > div {
    display: grid;
    grid-template-columns: 2rem minmax(0, 1fr);
    gap: 0.7rem;
    align-items: start;
}
.security-setup-steps > div > span {
    display: grid;
    place-items: center;
    width: 2rem;
    height: 2rem;
    border-radius: 50%;
    background: var(--accent-soft);
    color: var(--accent);
    font-weight: 800;
}
.security-setup-steps p {
    margin: 0.35rem 0;
    color: var(--text-secondary);
}
.security-copy-value,
.security-uri {
    overflow-wrap: anywhere;
    color: var(--text-primary);
}
.security-split {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
}
.security-scheduler-command {
    display: flex;
    gap: 0.75rem;
    align-items: center;
    margin-top: 1rem;
    padding: 0.65rem 0.75rem;
    border-radius: 6px;
    background: var(--bg-elevated);
    color: var(--text-secondary);
    font-size: 0.78rem;
}
.security-scheduler-command code {
    color: var(--text-primary);
}
.security-retention-list {
    display: grid;
}
.security-retention-list > div {
    display: grid;
    grid-template-columns: minmax(240px, 1fr) 130px;
    gap: 1rem;
    align-items: center;
    padding: 0.8rem 0;
    border-top: 1px solid var(--border-line);
}
.security-retention-list small,
.security-request-list small {
    display: block;
    margin-top: 0.2rem;
    color: var(--text-muted);
}
.security-danger-line {
    margin-top: 1.2rem;
    padding-top: 1rem;
    border-top: 1px solid var(--border-line);
}
.security-danger-line .field-input {
    max-width: 16rem;
}
.security-request-list {
    display: grid;
    margin-top: 1.2rem;
    border-top: 1px solid var(--border-line);
}
.security-request-list > form {
    display: grid;
    grid-template-columns: minmax(210px, 1fr) 140px minmax(180px, 1fr) auto auto;
    gap: 0.6rem;
    align-items: center;
    padding: 0.75rem 0;
    border-bottom: 1px solid var(--border-line);
}
.security-request-list > form > div > span {
    display: block;
    margin-top: 0.2rem;
    color: var(--text-secondary);
    font-size: 0.78rem;
}
.security-api-split > .surface {
    align-self: start;
}
.security-token-list {
    display: grid;
    margin: 1rem 0;
    border-top: 1px solid var(--border-line);
}
.security-token-list > div {
    display: flex;
    justify-content: space-between;
    gap: 0.75rem;
    align-items: center;
    padding: 0.75rem 0;
    border-bottom: 1px solid var(--border-line);
}
.security-token-list small {
    max-width: 42ch;
    overflow-wrap: anywhere;
    color: var(--text-muted);
}
.security-api-docs {
    display: grid;
    grid-template-columns: minmax(240px, 0.8fr) minmax(300px, 1.2fr);
    gap: 1.5rem;
    align-items: center;
}
.security-api-docs > div:last-child {
    display: grid;
    gap: 0.45rem;
}
.security-api-docs code {
    padding: 0.55rem 0.65rem;
    border-radius: 5px;
    background: var(--bg-elevated);
    color: var(--text-primary);
}
.security-login-body {
    display: grid;
    gap: 0.9rem;
    padding: 1rem;
}

@media (max-width: 980px) {
    .security-filterbar,
    .security-2fa-layout,
    .security-split,
    .security-api-docs {
        grid-template-columns: 1fr;
    }
    .security-request-list > form {
        grid-template-columns: 1fr 1fr;
    }
    .security-request-list > form > div,
    .security-request-list > form > input[name="legal_hold_reason"] {
        grid-column: 1 / -1;
    }
}

@media (max-width: 640px) {
    .security-status-row {
        grid-template-columns: auto minmax(0, 1fr);
    }
    .security-status-row > .badge {
        grid-column: 2;
        justify-self: start;
    }
    .security-code-grid,
    .security-retention-list > div,
    .security-request-list > form {
        grid-template-columns: 1fr;
    }
    .security-request-list > form > * {
        grid-column: 1 !important;
    }
    .security-scheduler-command {
        align-items: flex-start;
        flex-direction: column;
    }
}

@media (prefers-reduced-motion: reduce) {
    .security-subnav a,
    .permission-check span {
        transition: none;
    }
}

/* Integriertes Hilfe-Center */
.help-hero {
    position: relative;
    overflow: hidden;
    max-width: 1120px;
    margin: 0 auto 1rem;
    padding: clamp(2rem, 5vw, 4.5rem) clamp(1.25rem, 5vw, 4.5rem);
    border: 1px solid var(--border-line);
    border-radius: 18px;
    background:
        radial-gradient(circle at 88% 18%, color-mix(in srgb, #0ea5e9 22%, transparent), transparent 30%),
        linear-gradient(145deg, color-mix(in srgb, var(--bg-elevated) 82%, #0ea5e9), var(--bg-surface));
}
.help-hero::after {
    position: absolute;
    right: -3rem;
    bottom: -7rem;
    width: 18rem;
    height: 18rem;
    border: 1px solid color-mix(in srgb, #38bdf8 25%, transparent);
    border-radius: 50%;
    content: "";
    pointer-events: none;
}
.help-hero-copy { position: relative; z-index: 1; max-width: 720px; }
.help-hero .eyebrow,
.help-detail .eyebrow { color: #38bdf8; font-size: 0.72rem; font-weight: 800; letter-spacing: 0.14em; text-transform: uppercase; }
.help-hero h1 { margin: 0.4rem 0 0.65rem; font-size: clamp(2rem, 4vw, 3.6rem); line-height: 1.02; letter-spacing: -0.04em; }
.help-hero-copy > p { max-width: 650px; margin: 0; color: var(--text-secondary); font-size: 1.05rem; line-height: 1.65; }
.help-search {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    max-width: 760px;
    margin-top: 2rem;
    padding: 0.4rem;
    border: 1px solid var(--border-line-strong);
    border-radius: 12px;
    background: color-mix(in srgb, var(--bg-base) 82%, transparent);
    box-shadow: 0 18px 45px rgba(0, 0, 0, 0.16);
}
.help-search-icon { display: grid; width: 2.6rem; place-items: center; color: var(--text-muted); }
.help-search-icon .ui-icon { width: 1.15rem; }
.help-search input { min-width: 0; padding: 0.75rem 0.2rem; border: 0; outline: 0; background: transparent; color: var(--text-primary); }
.help-search .btn { min-height: 2.6rem; }
.help-categories { display: flex; overflow-x: auto; max-width: 1120px; margin: 0 auto 1rem; padding: 0.3rem 0.1rem; gap: 0.35rem; scrollbar-width: none; }
.help-categories::-webkit-scrollbar { display: none; }
.help-categories a { flex: 0 0 auto; padding: 0.55rem 0.85rem; border-radius: 999px; color: var(--text-secondary); font-size: 0.82rem; }
.help-categories a:hover { background: var(--bg-elevated); color: var(--text-primary); }
.help-categories a.is-active { background: #0ea5e9; color: #07131a; font-weight: 750; }
.help-results { max-width: 1120px; margin: 0 auto; padding: clamp(1rem, 3vw, 2rem); }
.help-results-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; padding-bottom: 1.1rem; }
.help-results-head h2 { margin: 0 0 0.2rem; font-size: 1.2rem; }
.help-results-head p { margin: 0; }
.help-article-list { border-top: 1px solid var(--border-line); }
.help-article-row { display: grid; grid-template-columns: 3rem minmax(0, 1fr) 2rem; align-items: center; gap: 1rem; padding: 1.15rem 0.35rem; border-bottom: 1px solid var(--border-line); transition: background 150ms ease, padding 150ms ease; }
.help-article-row:hover { padding-right: 0.75rem; padding-left: 0.75rem; background: color-mix(in srgb, #0ea5e9 7%, transparent); }
.help-article-index { color: color-mix(in srgb, #38bdf8 82%, var(--text-primary)); font-family: "Cascadia Mono", "Consolas", monospace; font-size: 0.78rem; font-weight: 700; }
.help-article-copy { display: flex; min-width: 0; flex-direction: column; gap: 0.25rem; }
.help-article-copy strong { font-size: 0.98rem; }
.help-article-copy > span:last-child { overflow: hidden; color: var(--text-muted); font-size: 0.82rem; text-overflow: ellipsis; white-space: nowrap; }
.help-article-meta { color: #38bdf8; font-size: 0.66rem; font-weight: 750; letter-spacing: 0.07em; text-transform: uppercase; }
.help-article-arrow { display: grid; place-items: center; color: var(--text-muted); }
.help-article-arrow .ui-icon { width: 1.1rem; }
.help-article-row:hover .help-article-arrow { color: #38bdf8; }
.help-empty { display: grid; min-height: 250px; place-items: center; align-content: center; text-align: center; }
.help-empty .ui-icon { width: 2rem; color: var(--text-muted); }
.help-empty h3 { margin: 0.8rem 0 0.25rem; }
.help-empty p { margin: 0; color: var(--text-muted); }
.help-role-note { display: flex; max-width: 1120px; margin: 1rem auto 0; padding: 0.9rem 1rem; align-items: center; gap: 0.85rem; color: var(--text-secondary); font-size: 0.8rem; }
.help-role-note > .ui-icon { width: 1.2rem; flex: 0 0 auto; color: #38bdf8; }
.help-role-note strong,
.help-role-note span { display: block; }
.help-role-note span { margin-top: 0.15rem; color: var(--text-muted); }
.help-article-toolbar { display: flex; max-width: 1120px; margin: 0 auto 0.75rem; justify-content: space-between; gap: 0.75rem; }
.help-detail { max-width: 1120px; margin: 0 auto; border: 1px solid var(--border-line); border-radius: 16px; background: var(--bg-surface); }
.help-detail-header { padding: clamp(1.5rem, 5vw, 4rem); border-bottom: 1px solid var(--border-line); background: linear-gradient(135deg, color-mix(in srgb, #0ea5e9 9%, transparent), transparent 58%); }
.help-detail-header h1 { max-width: 850px; margin: 0.5rem 0 0.8rem; font-size: clamp(1.8rem, 4vw, 3rem); line-height: 1.08; letter-spacing: -0.035em; }
.help-detail-header > p { max-width: 720px; margin: 0; color: var(--text-secondary); font-size: 1rem; line-height: 1.65; }
.help-detail-meta { display: flex; flex-wrap: wrap; gap: 1.2rem; margin-top: 1.3rem; color: var(--text-muted); font-size: 0.76rem; }
.help-detail-meta span { display: inline-flex; align-items: center; gap: 0.35rem; }
.help-detail-meta .ui-icon { width: 0.95rem; }
.help-detail-grid { display: grid; grid-template-columns: 230px minmax(0, 1fr); align-items: start; }
.help-toc { position: sticky; top: 1rem; display: flex; max-height: calc(100vh - 2rem); overflow-y: auto; padding: 2rem 1.25rem; flex-direction: column; gap: 0.2rem; }
.help-toc strong { margin-bottom: 0.55rem; font-size: 0.78rem; }
.help-toc a { padding: 0.42rem 0.55rem; border-radius: 6px; color: var(--text-muted); font-size: 0.75rem; line-height: 1.35; }
.help-toc a:hover { background: var(--bg-elevated); color: var(--text-primary); }
.help-detail-content { min-width: 0; padding: clamp(1.5rem, 4vw, 3.25rem); border-left: 1px solid var(--border-line); }
.help-goal { padding: 1rem 1.15rem; border: 1px solid color-mix(in srgb, #0ea5e9 28%, var(--border-line)); border-radius: 10px; background: color-mix(in srgb, #0ea5e9 7%, transparent); }
.help-goal span { color: #38bdf8; font-size: 0.68rem; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; }
.help-goal p { margin: 0.35rem 0 0; line-height: 1.6; }
.help-prerequisites { margin-top: 2.25rem; }
.help-prerequisites h2,
.help-troubleshooting h2,
.help-related h2 { margin: 0 0 0.8rem; font-size: 1.15rem; }
.help-prerequisites ul { margin: 0; padding-left: 1.2rem; color: var(--text-secondary); line-height: 1.8; }
.help-steps { margin-top: 2.5rem; }
.help-step { display: grid; grid-template-columns: 2.3rem minmax(0, 1fr); gap: 1.1rem; padding: 0 0 2.35rem; scroll-margin-top: 1rem; }
.help-step-number { display: grid; width: 2.3rem; height: 2.3rem; place-items: center; border: 1px solid color-mix(in srgb, #38bdf8 46%, var(--border-line)); border-radius: 50%; color: #38bdf8; font-weight: 800; }
.help-step h2 { margin: 0.25rem 0 0.55rem; font-size: 1.08rem; }
.help-step p { margin: 0; color: var(--text-secondary); line-height: 1.72; }
.help-screenshot { margin: 1.2rem 0 0; }
.help-screenshot img { display: block; width: 100%; border: 1px solid var(--border-line); border-radius: 10px; }
.help-screenshot figcaption { margin-top: 0.45rem; color: var(--text-muted); font-size: 0.75rem; }
.help-result { display: flex; padding: 1rem 1.15rem; align-items: flex-start; gap: 0.8rem; border-radius: 10px; background: color-mix(in srgb, #22c55e 11%, var(--bg-elevated)); }
.help-result > .ui-icon { width: 1.2rem; flex: 0 0 auto; color: #4ade80; }
.help-result strong { color: #4ade80; }
.help-result p { margin: 0.25rem 0 0; color: var(--text-secondary); line-height: 1.55; }
.help-troubleshooting { margin-top: 2.5rem; scroll-margin-top: 1rem; }
.help-troubleshooting details { border-top: 1px solid var(--border-line); }
.help-troubleshooting details:last-child { border-bottom: 1px solid var(--border-line); }
.help-troubleshooting summary { padding: 0.9rem 0; cursor: pointer; font-weight: 650; }
.help-troubleshooting details p { margin: 0 0 1rem; color: var(--text-secondary); line-height: 1.6; }
.help-related { margin-top: 2.5rem; }
.help-related a { display: flex; padding: 0.85rem 0; align-items: center; justify-content: space-between; gap: 1rem; border-top: 1px solid var(--border-line); }
.help-related a:last-child { border-bottom: 1px solid var(--border-line); }
.help-related strong,
.help-related small { display: block; }
.help-related small { max-width: 650px; margin-top: 0.2rem; color: var(--text-muted); }
.help-related .ui-icon { width: 1rem; flex: 0 0 auto; color: #38bdf8; }

@media (max-width: 760px) {
    .help-hero { border-radius: 12px; }
    .help-search { grid-template-columns: auto minmax(0, 1fr); }
    .help-search .btn { grid-column: 1 / -1; margin-top: 0.25rem; }
    .help-results-head { align-items: stretch; flex-direction: column; }
    .help-results-head .btn { align-self: flex-start; }
    .help-article-row { grid-template-columns: 2rem minmax(0, 1fr) 1.25rem; gap: 0.7rem; }
    .help-article-copy > span:last-child { display: -webkit-box; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 2; white-space: normal; }
    .help-detail-grid { grid-template-columns: 1fr; }
    .help-toc { display: none; }
    .help-detail-content { border-left: 0; }
    .help-article-toolbar { flex-wrap: wrap; }
}

@media print {
    .topbar,
    .app-nav,
    .app-announcement,
    .footer,
    .mobile-bottom-nav,
    .no-print { display: none !important; }
    body { background: #fff !important; color: #111 !important; }
    .main { width: 100% !important; max-width: none !important; padding: 0 !important; }
    .help-detail { max-width: none; border: 0; background: #fff; }
    .help-detail-header { padding: 0 0 1.5rem; background: none; }
    .help-detail-grid { display: block; }
    .help-detail-content { padding: 1.5rem 0 0; border: 0; }
    .help-step { break-inside: avoid; }
    .help-goal,
    .help-result { border: 1px solid #bbb; background: #fff; }
    .help-step p,
    .help-result p,
    .help-detail-header > p,
    .help-prerequisites ul { color: #333; }
}
.btn:active, .icon-btn:active { transform: translateY(1px); }
.btn:focus-visible, .icon-btn:focus-visible, .action-menu > summary:focus-visible {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
    box-shadow: 0 0 0 4px var(--accent-soft);
}
.btn[disabled], .btn.disabled, .icon-btn[disabled] { opacity: 0.48; cursor: not-allowed; pointer-events: none; }
.ui-icon { width: 1.05rem; height: 1.05rem; flex: 0 0 auto; }
.btn-sm .ui-icon, .btn-small .ui-icon { width: 0.95rem; height: 0.95rem; }
.btn-primary { background: var(--accent); color: var(--accent-on); }
.btn-primary:hover { background: var(--accent-hover); color: var(--accent-on); }
.btn-secondary { background: var(--bg-surface); border-color: var(--border-line-strong); color: var(--text-primary); }
.btn-secondary:hover { background: var(--bg-elevated); border-color: var(--border-line-strong); }
.btn-ghost { background: transparent; color: var(--text-secondary); }
.btn-ghost:hover { background: var(--bg-surface); color: var(--text-primary); }
.btn-danger { background: transparent; border-color: rgba(220,38,38,0.65); color: #f87171; }
.btn-danger:hover { background: rgba(220,38,38,0.12); }
.btn-small {
    min-height: 30px;
    padding: 0.35rem 0.55rem;
    font-size: 0.78rem;
}
.icon-btn {
    min-width: 40px;
    min-height: 40px;
    padding: 0.35rem 0.55rem;
    background: transparent;
    color: var(--text-secondary);
    border-color: transparent;
    font-size: 0.75rem;
}
.icon-btn:hover { background: var(--bg-elevated); color: var(--text-primary); border-color: var(--border-line); }
.icon-btn.danger:hover { color: #f87171; background: rgba(220,38,38,0.08); border-color: rgba(220,38,38,0.4); }

.split-action {
    position: relative;
    display: inline-flex;
    align-items: stretch;
    border: 1px solid var(--border-line-strong);
    border-radius: 4px;
    background: var(--bg-surface);
}
.split-action-main {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    padding: 0.55rem 0.85rem;
    color: var(--text-primary);
    border-right: 1px solid var(--border-line-strong);
    text-decoration: none;
}
.split-action-main:hover { background: var(--bg-elevated); }
.split-action-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.55rem 0.65rem;
    border: 0;
    background: transparent;
    color: var(--text-secondary);
    cursor: pointer;
}
.split-action-toggle:hover { background: var(--bg-elevated); color: var(--text-primary); }
.split-action-menu {
    position: absolute;
    z-index: 30;
    top: calc(100% + 0.35rem);
    right: 0;
    display: none;
    min-width: 180px;
    overflow: hidden;
    border: 1px solid var(--border-line-strong);
    border-radius: 6px;
    background: var(--bg-surface);
    box-shadow: 0 22px 60px rgba(0, 0, 0, 0.4);
}
.split-action.open .split-action-menu { display: grid; }
.split-action-option {
    display: block;
    padding: 0.6rem 0.85rem;
    color: var(--text-primary);
    text-decoration: none;
}
.split-action-option:hover { background: var(--bg-elevated); }

.intro {
    display: flex;
    align-items: end;
    justify-content: space-between;
    gap: 1rem;
    margin: 1.1rem 0 1.4rem;
}
.intro h1, .form-card h1 {
    margin: 0.25rem 0;
    font-size: clamp(2rem, 4vw, 3.5rem);
    font-weight: 300;
    letter-spacing: -0.04em;
}
.intro p { margin: 0; color: var(--text-secondary); }
.intro-count {
    color: var(--text-muted);
    font-family: "Cascadia Mono", "Consolas", monospace;
    font-size: 2rem;
}
.intro-count span { color: var(--accent); }

.dashboard-intro { align-items: center; }
.company-mini {
    display: flex;
    align-items: center;
    gap: 0.8rem;
    min-width: 260px;
    padding: 0.8rem;
    border: 1px solid var(--border-line);
    border-radius: 6px;
    background: var(--bg-surface);
}
.company-mini img,
.company-mini-logo {
    object-fit: contain;
    background: transparent;
}
.company-mini-logo-dark,
.company-mini-logo-light {
    display: none;
    width: auto;
    max-width: 180px;
    height: 52px;
}
.company-mini-logo-dark {
    display: block;
}
:root[data-theme="light"] .company-mini-logo-light {
    display: block;
}
:root[data-theme="light"] .company-mini-logo-dark {
    display: none;
}
.company-mini-mark {
    display: grid;
    place-items: center;
    width: 48px;
    height: 42px;
    border-radius: 4px;
    background: var(--accent-soft);
    color: var(--accent);
    font-weight: 800;
}
.company-mini strong,
.company-mini span {
    display: block;
}
.company-mini span { color: var(--text-secondary); font-size: 0.8rem; }

.dashboard-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 300px;
    gap: 1.2rem;
    align-items: start;
}
.dashboard-main {
    display: grid;
    gap: 1.2rem;
    min-width: 0;
}
.dashboard-sidebar {
    display: grid;
    gap: 1.2rem;
    position: sticky;
    top: 1.4rem;
}
.calendar-grid {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 0.4rem;
    padding: 1rem;
}
.calendar-weekday {
    padding: 0.3rem 0;
    color: var(--text-muted);
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-align: center;
    text-transform: uppercase;
}
.calendar-day {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    min-height: 84px;
    padding: 0.4rem;
    border: 1px solid var(--border-line);
    border-radius: 6px;
    background: var(--bg-base);
}
.calendar-day-outside {
    border-color: transparent;
    background: transparent;
}
.calendar-day-today {
    border-color: var(--accent);
    box-shadow: 0 0 0 1px var(--accent-soft);
}
.calendar-day-number {
    color: var(--text-secondary);
    font-size: 0.78rem;
    font-weight: 700;
}
.calendar-task {
    overflow: hidden;
    padding: 0.15rem 0.4rem;
    border-radius: 4px;
    background: var(--bg-elevated);
    color: var(--text-primary);
    font-size: 0.72rem;
    text-decoration: none;
    text-overflow: ellipsis;
    white-space: nowrap;
    border-left: 3px solid var(--accent);
}
.calendar-task.task-priority-high, .calendar-task.task-priority-urgent {
    border-left-color: #dc2626;
}
.calendar-task.task-priority-medium {
    border-left-color: #d97706;
}
.calendar-task-more {
    color: var(--text-muted);
    font-size: 0.68rem;
}
.absence-day {
    min-height: 96px;
}
.absence-day-overlap {
    border-color: #dc2626;
    border-width: 2px;
    background: rgba(220, 38, 38, 0.06);
}
.absence-overlap-flag {
    padding: 0.1rem 0.35rem;
    border-radius: 4px;
    background: #dc2626;
    color: #fff;
    font-size: 0.68rem;
    font-weight: 700;
    line-height: 1.3;
}
.absence-overlap-inline {
    display: inline-block;
    margin-top: 0.25rem;
}
.absence-overlap-summary {
    margin: 0 0 0.75rem;
    padding: 0.5rem 0.75rem;
    border-radius: 6px;
    background: rgba(220, 38, 38, 0.1);
    border: 1px solid rgba(220, 38, 38, 0.35);
    color: #b91c1c;
    font-size: 0.85rem;
    font-weight: 600;
}
.absence-chip-pending {
    opacity: 0.82;
    outline: 1px dashed rgba(255, 255, 255, 0.45);
    outline-offset: -1px;
}
.absence-chip {
    overflow: hidden;
    padding: 0.15rem 0.4rem;
    border-radius: 4px;
    background: var(--absence-color, var(--bg-elevated));
    color: #fff;
    font-size: 0.7rem;
    font-weight: 600;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.absence-calendar-legend {
    padding: 0 1rem 1rem;
    font-size: 0.78rem;
}
.plantafel-table th, .plantafel-table td {
    vertical-align: top;
}
.plantafel-today {
    background: var(--accent-soft);
}
.plantafel-cell {
    min-width: 130px;
    padding: 0.5rem !important;
}
.plantafel-cell-inner {
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
}
.plantafel-absent {
    background: rgba(220, 38, 38, 0.06);
}
.plantafel-absent-badge {
    background: #dc2626;
    color: #fff;
}
.plantafel-task-chip {
    display: flex;
    align-items: center;
    gap: 0.3rem;
    overflow: hidden;
    padding: 0.15rem 0.3rem;
    border-radius: 4px;
    background: var(--bg-elevated);
    border-left: 3px solid var(--accent);
}
.plantafel-task-chip.task-priority-high, .plantafel-task-chip.task-priority-urgent {
    border-left-color: #dc2626;
}
.plantafel-task-chip.task-priority-medium {
    border-left-color: #d97706;
}
.plantafel-task-link {
    overflow: hidden;
    color: var(--text-primary);
    font-size: 0.72rem;
    text-decoration: none;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.plantafel-drag-handle, .kanban-drag-handle {
    flex: 0 0 auto;
    color: var(--text-muted);
    font-size: 0.8rem;
    line-height: 1;
    cursor: grab;
    user-select: none;
}
.plantafel-team-row th {
    color: var(--text-secondary);
    font-style: italic;
}
.field-input-small {
    padding: 0.2rem 0.4rem;
    font-size: 0.72rem;
}
.view-toggle {
    display: flex;
    gap: 0.5rem;
    margin-bottom: 1rem;
}
.plantafel-view-hidden {
    display: none;
}
.plantafel-task-chip.dragging, .kanban-card.dragging {
    opacity: 0.4;
}
.plantafel-cell.plantafel-drop-target, .kanban-column.plantafel-drop-target {
    outline: 2px dashed var(--accent);
    outline-offset: -2px;
}
.kanban-board {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1rem;
    padding: 1rem;
}
.kanban-column {
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
    min-height: 200px;
    padding: 0.6rem;
    border: 1px solid var(--border-line);
    border-radius: 8px;
    background: var(--bg-base);
}
.kanban-column-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    color: var(--text-secondary);
    font-size: 0.82rem;
    font-weight: 700;
}
.kanban-column-body {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    min-height: 60px;
}
.kanban-card {
    display: flex;
    align-items: flex-start;
    gap: 0.4rem;
    padding: 0.5rem 0.6rem;
    border-radius: 6px;
    border-left: 3px solid var(--accent);
    background: var(--bg-elevated);
}
.kanban-card.task-priority-high, .kanban-card.task-priority-urgent {
    border-left-color: #dc2626;
}
.kanban-card.task-priority-medium {
    border-left-color: #d97706;
}
.kanban-card-link {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    overflow: hidden;
    color: var(--text-primary);
    text-decoration: none;
}
.kanban-card-title {
    font-size: 0.82rem;
    font-weight: 600;
}
.kanban-card-meta {
    color: var(--text-muted);
    font-size: 0.7rem;
}
.dashboard-task-list {
    display: grid;
    gap: 0.6rem;
    padding: 1rem;
}
.dashboard-task-item {
    display: grid;
    gap: 0.25rem;
    padding: 0.7rem;
    border: 1px solid var(--border-line);
    border-radius: 6px;
    background: var(--bg-base);
    color: var(--text-primary);
    text-decoration: none;
}
.dashboard-task-item:hover {
    border-color: var(--border-line-strong);
    background: var(--bg-elevated);
}
.dashboard-task-title {
    font-weight: 600;
}
@media (max-width: 960px) {
    .dashboard-layout {
        grid-template-columns: 1fr;
    }
    .dashboard-sidebar {
        position: static;
    }
}

.termine-intro {
    align-items: center;
}
.termine-toolbar {
    display: flex;
    align-items: center;
    gap: 0.55rem;
    padding-block: 0.75rem;
}
.termine-count {
    margin-left: auto;
}
.termine-list {
    padding: 0;
    overflow: clip;
}
.termine-item {
    display: grid;
    grid-template-columns: minmax(130px, 0.7fr) minmax(240px, 2fr) auto;
    gap: 1rem;
    align-items: center;
    padding: 1rem 1.1rem;
    border-bottom: 1px solid var(--border, #e2e8f0);
}
.termine-item:last-child {
    border-bottom: 0;
}
.termine-item.is-today {
    background: color-mix(in srgb, var(--accent, #0284c7) 7%, var(--bg-surface, #fff));
}
.termine-item time {
    display: grid;
    gap: 0.15rem;
}
.termine-item time span,
.termine-meta {
    color: var(--text-muted, #64748b);
    font-size: 0.86rem;
}
.termine-item h2 {
    margin: 0 0 0.3rem;
    font-size: 1rem;
}
.termine-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem;
}
.termine-actions {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 0.35rem;
}
.termine-actions form {
    margin: 0;
}
.termine-association {
    border: 1px solid var(--border, #e2e8f0);
    border-radius: 8px;
    padding: 0.85rem;
}
.termine-type-options {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    margin-bottom: 0.85rem;
}
.termine-type-options label {
    display: inline-flex;
    flex-direction: row;
    align-items: center;
    gap: 0.4rem;
}

@media (max-width: 760px) {
    .termine-item {
        grid-template-columns: 1fr;
        gap: 0.65rem;
    }
    .termine-actions {
        justify-content: flex-start;
    }
    .termine-actions .btn,
    .termine-actions form {
        flex: 1 1 auto;
    }
    .termine-actions form .btn {
        width: 100%;
    }
    .termine-toolbar {
        flex-wrap: wrap;
    }
    .termine-count {
        width: 100%;
        margin-left: 0;
    }
}

.ticket-intro { align-items: center; }
.ticket-list-intro {
    justify-content: flex-start;
    margin: 0.8rem 0 1rem;
}
.ticket-list-intro h1 {
    margin: 0.2rem 0 0;
    font-size: 1.15rem;
    font-weight: 650;
}
.ticket-toolbar {
    position: relative;
    z-index: 10;
    padding-top: 0;
    background: transparent;
    overflow: visible;
}
.ticket-filter-form {
    display: grid;
    gap: 0.65rem;
    width: 100%;
    overflow: visible;
}
.ticket-filter-main {
    display: flex;
    align-items: center;
    gap: 0.55rem;
    width: 100%;
    justify-content: space-between;
}
.ticket-toolbar-actions {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    justify-content: flex-end;
    gap: 0.55rem;
    margin-left: auto;
    min-width: 0;
}
.ticket-search-input {
    flex: 1 1 160px;
    min-width: 0;
    max-width: 360px;
}
.ticket-filter-toggle {
    position: relative;
    min-width: 38px;
    border-color: var(--border-line-strong);
    background: var(--bg-elevated);
    color: var(--text-primary);
}
.ticket-filter-toggle.active {
    border-color: var(--accent);
    color: #d6b4ff;
    box-shadow: 0 0 0 2px var(--accent-soft);
}
.ticket-filter-count {
    position: absolute;
    top: -6px;
    right: -6px;
    min-width: 16px;
    height: 16px;
    padding: 0 4px;
    border-radius: 999px;
    background: var(--accent);
    color: #fff;
    font-size: 0.65rem;
    font-weight: 700;
    line-height: 16px;
    text-align: center;
}
.ticket-filter-reset-link {
    align-self: center;
    color: #f87171;
    font-size: 0.85rem;
    font-weight: 600;
    text-decoration: none;
    white-space: nowrap;
}
.ticket-filter-reset-link:hover {
    text-decoration: underline;
}
.ticket-filter-panel {
    display: none;
    flex-direction: column;
    gap: 0.65rem;
    overflow: visible;
}
.ticket-filter-panel.open {
    display: flex;
}
.ticket-filter-panel label span {
    display: block;
    margin-bottom: 0.3rem;
    color: var(--text-secondary);
    font-size: 0.78rem;
}
.ticket-filter-left {
    display: grid;
    gap: 0.55rem;
    justify-self: start;
}
.ticket-filter-tags-row {
    display: flex;
    flex-wrap: wrap;
    align-items: end;
    gap: 0.65rem 1.2rem;
}
.ticket-filter-tags {
    flex: 1 1 420px;
    max-width: 520px;
}
.ticket-filter-checks {
    display: flex;
    flex-wrap: wrap;
    gap: 0.65rem 1.2rem;
    align-items: center;
    padding-bottom: 0.55rem;
}
.ticket-filter-fields {
    display: grid;
    grid-template-columns: 150px 150px minmax(220px, 320px) minmax(200px, 280px);
    gap: 0.65rem;
    align-items: end;
}
.overdue-chip {
    min-height: 40px;
    width: fit-content;
    padding: 0.55rem 0.7rem;
    border-radius: 999px;
    background: rgba(220, 38, 38, 0.08);
    color: #f87171;
    text-decoration: none;
}
.overdue-chip:hover {
    background: rgba(220, 38, 38, 0.16);
}
.ticket-filter-reset {
    align-self: center;
}
.compact-select {
    width: auto;
    min-width: 150px;
}
.ticket-filter-main .choice-picker-status {
    min-width: 112px;
}
.ticket-filter-main .choice-picker-status .choice-trigger {
    min-height: 41px;
    padding: 0.55rem 0.75rem;
    border-color: var(--border-line-strong);
    background: var(--bg-elevated);
}
.ticket-filter-main .choice-picker-status .choice-menu {
    min-width: 255px;
    padding: 0.45rem 0;
    background: #1b2025;
}
.ticket-filter-main .choice-picker-status .choice-option {
    min-height: 37px;
    padding: 0.5rem 0.85rem;
    color: var(--text-secondary);
}
.ticket-filter-main .choice-picker-status .choice-option:hover,
.ticket-filter-main .choice-picker-status .choice-option.active {
    background: color-mix(in srgb, var(--accent) 14%, transparent);
    color: var(--text-primary);
}

.stats {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem;
    margin-bottom: 1.3rem;
}
.stat-card, .surface {
    border: 1px solid var(--border-line);
    border-radius: 6px;
    background: var(--bg-surface);
}
.stat-card { padding: 1.25rem; }
.stat-card--dashboard {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}
.stat-card-head {
    display: flex;
    align-items: center;
    gap: 0.7rem;
}
.stat-card-icon {
    display: grid;
    place-items: center;
    width: 2.6rem;
    height: 2.6rem;
    flex-shrink: 0;
    line-height: 1;
}
.stat-card-icon svg {
    width: 1.85rem;
    height: 1.85rem;
}
.stat-card-icon--tenants {
    color: #60a5fa;
}
.stat-card-icon--documents {
    color: #fbbf24;
    font-size: 1.85rem;
}
.stat-card-icon--objects {
    color: #34d399;
}
html[data-theme="light"] .stat-card-icon--tenants { color: #2563eb; }
html[data-theme="light"] .stat-card-icon--documents { color: #d97706; }
html[data-theme="light"] .stat-card-icon--objects { color: #059669; }
.stat-card--dashboard strong {
    margin-top: 0.45rem;
    margin-left: 3.3rem;
}
.stat-card strong {
    display: block;
    margin-top: 0.8rem;
    color: var(--text-primary);
    font-family: "Cascadia Mono", "Consolas", monospace;
    font-size: 2.25rem;
    font-weight: 500;
}
.surface { margin-bottom: 1.2rem; overflow: hidden; }
.section-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 1rem 1.2rem;
    border-bottom: 1px solid var(--border-line);
}
.section-head h1, .section-head h2 { margin: 0; }
.action-bar, .intro-actions, .intro > .actions, .section-actions, .table-actions, .termine-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    flex-wrap: wrap;
    gap: 0.5rem;
}
.action-bar form, .intro-actions form, .intro > .actions form, .section-actions form, .table-actions form { margin: 0; }
.danger-zone {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-left: 0.45rem;
    padding-left: 0.75rem;
    border-left: 1px solid var(--border-line);
}
.action-menu { position: relative; }
.action-menu > summary { list-style: none; }
.action-menu > summary::-webkit-details-marker { display: none; }
.action-menu-panel {
    position: absolute;
    z-index: 58;
    top: calc(100% + 0.4rem);
    right: 0;
    display: grid;
    min-width: 210px;
    gap: 0.2rem;
    padding: 0.4rem;
    border: 1px solid var(--border-line);
    border-radius: 8px;
    background: var(--bg-surface);
    box-shadow: 0 18px 50px rgba(0,0,0,.32);
}
.action-menu-panel .btn, .action-menu-panel form, .action-menu-panel form .btn { width: 100%; justify-content: flex-start; }
.pagination {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    padding: 1rem 1.2rem;
    border-top: 1px solid var(--border-line);
}
.pagination-info { color: var(--text-secondary); }
.badge {
    padding: 0.25rem 0.55rem;
    border: 1px solid var(--border-line);
    border-radius: 3px;
    background: var(--bg-elevated);
    color: var(--text-secondary);
    font-family: "Cascadia Mono", "Consolas", monospace;
    font-size: 0.72rem;
}
.contact-badge {
    border-radius: 999px;
    font-family: inherit;
    font-weight: 600;
    text-transform: none;
}
.contact-badge-mieter { border-color: #2563eb; color: #2563eb; background: rgba(37, 99, 235, 0.12); }
.contact-badge-dienstleister { border-color: #d97706; color: #d97706; background: rgba(217, 119, 6, 0.12); }
.contact-badge-hausverwaltung { border-color: #7c3aed; color: #7c3aed; background: rgba(124, 58, 237, 0.12); }
.contact-badge-kunde { border-color: #059669; color: #059669; background: rgba(5, 150, 105, 0.12); }
.contact-badge-lieferant { border-color: #db2777; color: #db2777; background: rgba(219, 39, 119, 0.12); }
.contact-badge-partner { border-color: #0891b2; color: #0891b2; background: rgba(8, 145, 178, 0.12); }
.contact-badge-kontakt,
.contact-badge-andere { border-color: var(--border-line); color: var(--text-secondary); background: var(--bg-elevated); }
.contact-rating {
    font-size: 0.72rem;
    font-weight: 600;
}
.contact-rating-gut { border-color: #059669; color: #059669; background: rgba(5, 150, 105, 0.12); }
.contact-rating-mittel { border-color: #d97706; color: #d97706; background: rgba(217, 119, 6, 0.12); }
.contact-rating-schlecht { border-color: #dc2626; color: #dc2626; background: rgba(220, 38, 38, 0.12); }
.contact-abc {
    min-width: 2rem;
    text-align: center;
    font-weight: 800;
}
.contact-abc-a { border-color: #2563eb; color: #2563eb; background: rgba(37, 99, 235, 0.14); }
.contact-abc-b { border-color: #d97706; color: #d97706; background: rgba(217, 119, 6, 0.14); }
.contact-abc-c { border-color: #db2777; color: #db2777; background: rgba(219, 39, 119, 0.14); }
.contact-abc-grid {
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
}
.contact-abc-pillars {
    display: grid;
    gap: 0.85rem;
}
.contact-abc-pillar {
    padding: 0.9rem 1rem;
    border: 1px solid var(--border-line);
    border-radius: 10px;
    background: var(--bg-surface);
}
.contact-abc-pillar-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.75rem;
    margin-bottom: 0.55rem;
}
.contact-abc-pillar-head h3 {
    margin: 0;
    font-size: 0.95rem;
}
.contact-abc-pillar-sub {
    margin: 0.15rem 0 0;
    font-size: 0.8rem;
    color: var(--text-muted);
}
.contact-abc-pillar-select {
    min-width: 7.5rem;
    flex-shrink: 0;
}
.contact-abc-factors-grid {
    display: grid;
    gap: 0.55rem;
    margin-bottom: 0.55rem;
}
.contact-abc-factor-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 8.5rem;
    gap: 0.65rem;
    align-items: center;
}
.contact-abc-factor-label {
    font-size: 0.82rem;
    color: var(--text-secondary);
    line-height: 1.35;
}
@media (max-width: 640px) {
    .contact-abc-factor-row {
        grid-template-columns: 1fr;
        gap: 0.35rem;
    }
}
.contact-abc-factors {
    margin: 0 0 0.55rem;
    padding-left: 1.1rem;
    font-size: 0.82rem;
    color: var(--text-secondary);
}
.contact-abc-factors li + li {
    margin-top: 0.2rem;
}
.contact-abc-why {
    margin: 0;
    font-size: 0.8rem;
    color: var(--text-muted);
    line-height: 1.45;
}
.contact-abc-panel {
    margin: 1rem 0;
    padding: 1rem;
    border: 1px solid var(--border-line);
    border-radius: 10px;
    background: var(--bg-elevated);
}
.contact-abc-result {
    margin-top: 0.75rem;
    padding: 0.85rem 1rem;
    border-radius: 8px;
    border: 1px solid var(--border-line);
    background: var(--bg-surface);
}
.contact-abc-result-a { border-color: #2563eb; background: rgba(37, 99, 235, 0.08); }
.contact-abc-result-b { border-color: #d97706; background: rgba(217, 119, 6, 0.08); }
.contact-abc-result-c { border-color: #db2777; background: rgba(219, 39, 119, 0.08); }
.contact-abc-result-label {
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--text-muted);
}
.contact-abc-result-value {
    font-size: 1.35rem;
    font-weight: 800;
    margin-top: 0.15rem;
}
.contact-abc-result-hint {
    margin: 0.35rem 0 0;
    font-size: 0.85rem;
    color: var(--text-secondary);
}
.customer-table .customer-row {
    cursor: pointer;
}
.customer-table .customer-row-open:hover {
    background: rgba(37, 99, 235, 0.06);
}
.customer-table .customer-row-actions,
.customer-table .customer-row-actions * {
    cursor: default;
}
.customer-object-modal {
    position: fixed;
    inset: 0;
    z-index: 1200;
    display: grid;
    place-items: center;
    padding: 1rem;
}
.customer-object-modal[hidden] {
    display: none !important;
}
body.customer-modal-open {
    overflow: hidden;
}
.customer-object-modal-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(2, 6, 23, 0.62);
}
.customer-object-modal-dialog {
    position: relative;
    width: min(100%, 34rem);
    max-height: calc(100vh - 2rem);
    overflow: auto;
    border-radius: 14px;
    border: 1px solid var(--border-line);
    background: var(--bg-elevated);
    box-shadow: 0 24px 60px rgba(0, 0, 0, 0.28);
    padding: 1.1rem 1.15rem 1.15rem;
}
.customer-object-modal-close {
    position: absolute;
    top: 0.65rem;
    right: 0.65rem;
    width: 2rem;
    height: 2rem;
    border: 0;
    border-radius: 999px;
    background: transparent;
    color: var(--text-muted);
    font-size: 1.35rem;
    line-height: 1;
    cursor: pointer;
}
.customer-object-modal-close:hover {
    background: rgba(148, 163, 184, 0.16);
}
.customer-object-modal-head h2 {
    margin: 0.2rem 0 0;
    font-size: 1.2rem;
}
.customer-object-modal-section h3 {
    margin: 0 0 0.65rem;
    font-size: 0.92rem;
}
.customer-object-list {
    display: grid;
    gap: 0.55rem;
}
.customer-object-card {
    display: grid;
    gap: 0.18rem;
    padding: 0.75rem 0.85rem;
    border: 1px solid var(--border-line);
    border-radius: 10px;
    background: var(--bg-surface);
    text-decoration: none;
    color: inherit;
    transition: border-color 0.15s ease, background 0.15s ease;
}
.customer-object-card:hover {
    border-color: #2563eb;
    background: rgba(37, 99, 235, 0.06);
}
.customer-object-card-status {
    font-size: 0.78rem;
    color: var(--text-muted);
}
.customer-object-empty {
    padding: 0.85rem;
    border: 1px dashed var(--border-line);
    border-radius: 10px;
    color: var(--text-muted);
    font-size: 0.88rem;
}
.customer-object-modal-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.55rem;
    margin-top: 1rem;
}

/* Kunden- und Objektraum */
.customer-hub-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 1.25rem;
    margin-bottom: 1rem;
    padding: 0.35rem 0;
}
.customer-hub-head h1 {
    margin: 0;
    font-size: 1.65rem;
    letter-spacing: -0.025em;
}
.customer-hub-head p {
    max-width: 62ch;
    margin: 0.35rem 0 0;
    color: var(--text-muted);
    text-wrap: pretty;
}
.customer-hub-actions,
.entity-switch,
.customer-letter-filter,
.customer-directory-actions,
.customer-focus-quick-actions,
.object-hub-actions,
.customer-data-tools-body {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
}
.entity-switch {
    padding: 0.25rem;
    border: 1px solid var(--border-line);
    border-radius: 8px;
    background: var(--bg-surface);
}
.entity-switch a {
    min-width: 5.6rem;
    padding: 0.5rem 0.8rem;
    border-radius: 6px;
    color: var(--text-secondary);
    font-size: 0.84rem;
    font-weight: 700;
    text-align: center;
}
.entity-switch a.active {
    background: var(--accent);
    color: var(--accent-on);
}
.customer-hub-tools {
    display: grid;
    grid-template-columns: minmax(18rem, 1fr) auto auto;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 1rem;
    padding: 0.75rem;
    border: 1px solid var(--border-line);
    border-radius: 10px;
    background: var(--bg-surface);
}
.customer-hub-search {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    min-height: 44px;
    padding: 0 0.8rem;
    border: 1px solid var(--border-line);
    border-radius: 8px;
    background: var(--bg-base);
}
.customer-hub-search:focus-within {
    border-color: var(--accent);
    box-shadow: 0 0 0 3px var(--accent-soft);
}
.customer-hub-search .ui-icon {
    color: var(--text-muted);
}
.customer-hub-search input {
    width: 100%;
    min-width: 0;
    border: 0;
    outline: 0;
    background: transparent;
    color: var(--text-primary);
}
.customer-hub-search input::placeholder {
    color: var(--text-muted);
    opacity: 1;
}
.customer-hub-search > a {
    color: var(--accent);
    font-size: 0.78rem;
    font-weight: 700;
}
.customer-letter-filter a {
    min-width: 2.55rem;
    padding: 0.4rem 0.52rem;
    border-radius: 6px;
    color: var(--text-secondary);
    font-size: 0.78rem;
    font-weight: 700;
    text-align: center;
}
.customer-letter-filter a:hover,
.customer-letter-filter a.active {
    background: var(--accent-soft);
    color: var(--accent);
}
.customer-result-count {
    color: var(--text-muted);
    font-size: 0.78rem;
    white-space: nowrap;
}
.customer-workspace-layout {
    display: grid;
    grid-template-columns: minmax(22rem, 0.9fr) minmax(28rem, 1.1fr);
    gap: 1rem;
    align-items: start;
}
.customer-directory,
.customer-focus {
    border: 1px solid var(--border-line);
    border-radius: 10px;
    background: var(--bg-surface);
    overflow: hidden;
}
.customer-directory-item {
    position: relative;
    border-bottom: 1px solid var(--border-line);
    transition: background 180ms cubic-bezier(0.22, 1, 0.36, 1), border-color 180ms ease;
}
.customer-directory-item:last-of-type {
    border-bottom: 0;
}
.customer-directory-item:hover,
.customer-directory-item.selected {
    background: var(--accent-soft);
}
.customer-directory-item.selected {
    box-shadow: inset 0 0 0 1px var(--border-line-strong);
}
.customer-directory-open {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: 0.8rem;
    width: 100%;
    padding: 1rem 1rem 0.7rem;
    border: 0;
    background: transparent;
    color: inherit;
    text-align: left;
    cursor: pointer;
}
.customer-directory-open:focus-visible {
    outline: 2px solid var(--accent);
    outline-offset: -3px;
}
.customer-avatar {
    display: inline-grid;
    place-items: center;
    width: 2.7rem;
    height: 2.7rem;
    flex: 0 0 auto;
    border: 1px solid var(--border-line-strong);
    border-radius: 50%;
    background: var(--accent-soft);
    color: var(--accent);
    font-size: 0.8rem;
    font-weight: 800;
}
.customer-avatar-large {
    width: 3.45rem;
    height: 3.45rem;
    font-size: 1rem;
}
.customer-directory-main {
    display: grid;
    gap: 0.28rem;
    min-width: 0;
}
.customer-directory-title,
.customer-focus-title-line,
.customer-focus-object-top,
.object-hub-card-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.65rem;
}
.customer-directory-title strong {
    overflow: hidden;
    font-size: 0.98rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.customer-directory-number {
    color: var(--accent);
    font-size: 0.76rem;
}
.customer-directory-contact {
    overflow: hidden;
    color: var(--text-secondary);
    font-size: 0.8rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.customer-object-preview {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.35rem;
    margin-top: 0.2rem;
    color: var(--text-muted);
    font-size: 0.72rem;
}
.customer-object-pill,
.customer-object-more {
    max-width: 10rem;
    overflow: hidden;
    padding: 0.2rem 0.42rem;
    border: 1px solid var(--border-line);
    border-radius: 5px;
    background: var(--bg-elevated);
    color: var(--text-secondary);
    text-overflow: ellipsis;
    white-space: nowrap;
}
.customer-directory-arrow {
    color: var(--accent);
}
.customer-directory-actions {
    justify-content: flex-end;
    padding: 0 1rem 0.75rem 4.5rem;
}
.customer-directory-actions .icon-btn {
    width: 2rem;
    min-height: 2rem;
}
.customer-focus {
    position: sticky;
    top: 1rem;
    min-height: 28rem;
    padding: 1.2rem;
}
.customer-focus-empty {
    display: grid;
    place-items: center;
    min-height: 24rem;
    color: var(--text-muted);
    text-align: center;
}
.customer-focus-empty .ui-icon {
    width: 2rem;
    height: 2rem;
    margin-bottom: 0.5rem;
    color: var(--accent);
}
.customer-focus-empty p {
    max-width: 32ch;
    margin: 0.35rem auto 0;
}
.customer-focus-head {
    display: flex;
    align-items: center;
    gap: 0.9rem;
    padding-bottom: 1rem;
    border-bottom: 1px solid var(--border-line);
}
.customer-focus-head h2 {
    margin: 0;
    font-size: 1.3rem;
}
.customer-focus-head p {
    margin: 0.25rem 0 0;
    color: var(--accent);
    font-size: 0.78rem;
}
.customer-focus-contact {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.7rem;
    padding: 1rem 0;
}
.customer-focus-contact > div {
    min-width: 0;
    padding: 0.7rem;
    border-radius: 7px;
    background: var(--bg-elevated);
}
.customer-focus-contact span,
.object-hub-meta dt {
    display: block;
    margin-bottom: 0.25rem;
    color: var(--text-muted);
    font-size: 0.68rem;
}
.customer-focus-contact strong {
    display: block;
    overflow-wrap: anywhere;
    font-size: 0.8rem;
    font-weight: 600;
}
.customer-focus-quick-actions {
    padding-bottom: 1rem;
    border-bottom: 1px solid var(--border-line);
}
.customer-focus-section-head {
    padding: 1rem 0 0.7rem;
}
.customer-focus-section-head > div {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
}
.customer-focus-section-head h3 {
    margin: 0;
    font-size: 1rem;
}
.customer-focus-section-head span {
    color: var(--text-muted);
    font-size: 0.75rem;
}
.customer-focus-objects {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.65rem;
}
.customer-focus-object {
    display: grid;
    gap: 0.38rem;
    min-height: 9.5rem;
    padding: 0.85rem;
    border: 1px solid var(--border-line);
    border-radius: 8px;
    background: var(--bg-elevated);
    transition: border-color 180ms ease, transform 180ms cubic-bezier(0.22, 1, 0.36, 1);
}
.customer-focus-object:hover {
    border-color: var(--accent);
    transform: translateY(-2px);
}
.customer-focus-object > span:not(.customer-focus-object-top) {
    color: var(--text-secondary);
    font-size: 0.78rem;
}
.customer-focus-object small {
    color: var(--text-muted);
}
.customer-focus-object-open {
    align-self: end;
    color: var(--accent) !important;
    font-weight: 700;
}
.customer-focus-object-new {
    place-content: center;
    justify-items: center;
    border-style: dashed;
    background: transparent;
    text-align: center;
}
.customer-focus-object-plus,
.object-hub-plus {
    display: inline-grid;
    place-items: center;
    width: 2.3rem;
    height: 2.3rem;
    border-radius: 50%;
    background: var(--accent-soft);
    color: var(--accent) !important;
    font-size: 1.35rem !important;
}
.customer-hub-empty {
    display: grid;
    gap: 0.35rem;
    place-content: center;
    min-height: 12rem;
    padding: 1.2rem;
    color: var(--text-muted);
    text-align: center;
}
.customer-hub-empty strong {
    color: var(--text-primary);
}
.customer-hub-pagination {
    margin: 0;
    padding: 0.8rem;
}
.customer-data-tools {
    margin-top: 1rem;
    border: 1px solid var(--border-line);
    border-radius: 8px;
    background: var(--bg-surface);
}
.customer-data-tools summary {
    padding: 0.8rem 1rem;
    color: var(--text-muted);
    font-size: 0.78rem;
    font-weight: 700;
    cursor: pointer;
}
.customer-data-tools-body {
    padding: 0 1rem 1rem;
}
.customer-data-tools-body form {
    display: flex;
    flex: 1;
    gap: 0.5rem;
}
.object-hub-tools {
    grid-template-columns: minmax(18rem, 1fr) auto;
}
.object-hub-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(18rem, 1fr));
    gap: 0.85rem;
}
.object-hub-card {
    display: grid;
    min-height: 16.5rem;
    overflow: hidden;
    border: 1px solid var(--border-line);
    border-radius: 10px;
    background: var(--bg-surface);
    transition: border-color 180ms ease, transform 180ms cubic-bezier(0.22, 1, 0.36, 1);
}
.object-hub-card:hover {
    border-color: var(--border-line-strong);
    transform: translateY(-2px);
}
.object-hub-card-main {
    display: grid;
    gap: 0.7rem;
    padding: 1rem;
}
.object-hub-card-head .font-mono {
    color: var(--text-muted);
    font-size: 0.72rem;
}
.object-hub-title {
    font-size: 1.08rem;
}
.object-hub-address {
    min-height: 2.2rem;
    color: var(--text-secondary);
    font-size: 0.82rem;
    line-height: 1.45;
}
.object-hub-meta {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.6rem;
    margin: 0;
}
.object-hub-meta > div {
    min-width: 0;
    padding: 0.65rem;
    border-radius: 7px;
    background: var(--bg-elevated);
}
.object-hub-meta dd {
    margin: 0;
    overflow: hidden;
    font-size: 0.8rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.object-hub-open {
    align-self: end;
    color: var(--accent);
    font-size: 0.78rem;
    font-weight: 700;
}
.object-hub-actions {
    justify-content: flex-end;
    align-self: end;
    padding: 0.7rem 1rem;
    border-top: 1px solid var(--border-line);
}
.object-hub-card-new {
    place-content: center;
    justify-items: center;
    gap: 0.55rem;
    min-height: 16.5rem;
    border-style: dashed;
    color: var(--text-secondary);
    text-align: center;
}
.object-hub-card-new:hover {
    border-color: var(--accent);
    color: var(--text-primary);
}

@media (max-width: 1100px) {
    .customer-workspace-layout {
        grid-template-columns: minmax(19rem, 0.9fr) minmax(23rem, 1.1fr);
    }
    .customer-focus-contact {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 960px) {
    .customer-hub-head {
        align-items: flex-start;
    }
    .customer-hub-tools {
        grid-template-columns: 1fr;
    }
    .customer-result-count {
        justify-self: end;
    }
    .customer-workspace-layout {
        grid-template-columns: 1fr;
    }
    .customer-focus {
        position: static;
    }
}

@media (max-width: 640px) {
    .customer-hub-head,
    .customer-hub-actions {
        align-items: stretch;
        flex-direction: column;
    }
    .entity-switch {
        display: grid;
        grid-template-columns: repeat(2, 1fr);
    }
    .customer-hub-tools {
        padding: 0.6rem;
    }
    .customer-letter-filter {
        display: grid;
        grid-template-columns: repeat(5, 1fr);
    }
    .customer-letter-filter a {
        min-width: 0;
    }
    .customer-directory-open {
        grid-template-columns: auto minmax(0, 1fr);
    }
    .customer-directory-arrow {
        display: none;
    }
    .customer-object-pill {
        display: none;
    }
    .customer-directory-actions {
        justify-content: flex-start;
        padding-left: 4.5rem;
    }
    .customer-focus {
        padding: 0.9rem;
    }
    .customer-focus-title-line {
        align-items: flex-start;
        flex-direction: column;
    }
    .customer-focus-objects,
    .object-hub-grid,
    .object-hub-meta {
        grid-template-columns: 1fr;
    }
    .customer-focus-quick-actions .btn,
    .customer-data-tools-body .btn {
        flex: 1 1 calc(50% - 0.5rem);
    }
    .customer-data-tools-body,
    .customer-data-tools-body form {
        align-items: stretch;
        flex-direction: column;
    }
}

@media (prefers-reduced-motion: reduce) {
    .customer-directory-item,
    .customer-focus-object,
    .object-hub-card {
        transition: none;
    }
    .customer-focus-object:hover,
    .object-hub-card:hover {
        transform: none;
    }
}

/* Eingangsrechnungen & Ausgaben */
.expense-intro {
    align-items: flex-end;
}
.expense-total-count {
    display: inline-flex;
    align-items: center;
    min-height: 2rem;
    padding: 0.35rem 0.75rem;
    border: 1px solid var(--border-line);
    border-radius: 999px;
    color: var(--text-muted);
    font-size: 0.78rem;
    font-weight: 700;
}
.expense-command-bar {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    margin: 1rem 0;
    overflow: hidden;
    border: 1px solid var(--border-line);
    border-radius: 14px;
    background: var(--surface);
}
.expense-command-bar > * {
    display: flex;
    min-width: 0;
    padding: 0.85rem 1rem;
    flex-direction: column;
    gap: 0.2rem;
    border-right: 1px solid var(--border-line);
    color: inherit;
    text-decoration: none;
}
.expense-command-bar > *:last-child { border-right: 0; }
.expense-command-bar span {
    color: var(--text-muted);
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}
.expense-command-bar strong {
    overflow: hidden;
    font-size: 1.05rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.expense-command-bar a:hover { background: color-mix(in srgb, #e11d48 7%, transparent); }
.expense-command-bar .has-alert strong { color: #ef4444; }
.expense-workbench {
    display: grid;
    grid-template-columns: minmax(0, 1.7fr) minmax(280px, 0.9fr);
    gap: 1rem;
    margin-bottom: 1rem;
}
.expense-upload-zone,
.expense-datev-box {
    border: 1px solid var(--border-line);
    border-radius: 14px;
    background: var(--surface);
}
.expense-upload-zone {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 1rem;
    padding: 0.8rem;
    border-style: dashed;
}
.expense-upload-zone input[type="file"] {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
}
.expense-upload-zone label {
    display: grid;
    grid-template-columns: 2.5rem minmax(0, 1fr);
    align-items: center;
    gap: 0.1rem 0.75rem;
    min-width: 0;
    cursor: pointer;
}
.expense-upload-zone label strong,
.expense-upload-zone label small { grid-column: 2; }
.expense-upload-zone label small { color: var(--text-muted); }
.expense-upload-icon {
    display: grid;
    grid-column: 1;
    grid-row: 1 / span 2;
    width: 2.5rem;
    height: 2.5rem;
    place-items: center;
    border-radius: 10px;
    background: color-mix(in srgb, #e11d48 14%, transparent);
    color: #fb7185;
}
.expense-upload-icon .ui-icon { width: 1.2rem; height: 1.2rem; }
.expense-upload-zone:focus-within { outline: 2px solid color-mix(in srgb, #e11d48 55%, transparent); outline-offset: 2px; }
.expense-datev-box {
    display: grid;
    grid-template-columns: minmax(110px, 1fr) 4.5rem 5.5rem;
    align-items: end;
    gap: 0.55rem;
    padding: 0.8rem;
}
.expense-datev-box > div { align-self: center; }
.expense-datev-box strong,
.expense-datev-box small { display: block; }
.expense-datev-box small { margin-top: 0.15rem; color: var(--text-muted); }
.expense-datev-box .btn { grid-column: 1 / -1; }
.expense-filter { margin-bottom: 1rem; }
.expense-filter .resource-search { flex: 1 1 340px; }
.expense-filter select { width: min(210px, 100%); }
.expense-ledger { padding: 0; overflow: hidden; }
.expense-ledger-head,
.expense-ledger-row {
    display: grid;
    grid-template-columns: minmax(220px, 1.5fr) minmax(170px, 1fr) 130px 130px 120px 1.25rem;
    align-items: center;
    gap: 1rem;
}
.expense-ledger-head {
    padding: 0.7rem 1rem;
    border-bottom: 1px solid var(--border-line);
    color: var(--text-muted);
    font-size: 0.68rem;
    font-weight: 800;
    letter-spacing: 0.06em;
    text-transform: uppercase;
}
.expense-ledger-row {
    min-height: 4.6rem;
    padding: 0.75rem 1rem;
    border-bottom: 1px solid var(--border-line);
    color: inherit;
    text-decoration: none;
    transition: background-color 150ms ease;
}
.expense-ledger-row:last-child { border-bottom: 0; }
.expense-ledger-row:hover { background: color-mix(in srgb, #e11d48 6%, transparent); }
.expense-ledger-row > div:not(.expense-document-cell) { min-width: 0; }
.expense-ledger-row strong,
.expense-ledger-row small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.expense-ledger-row small { margin-top: 0.15rem; color: var(--text-muted); font-size: 0.75rem; }
.expense-document-cell { display: flex; align-items: center; gap: 0.7rem; min-width: 0; }
.expense-document-cell > span {
    display: grid;
    flex: 0 0 2.1rem;
    width: 2.1rem;
    height: 2.1rem;
    place-items: center;
    border-radius: 9px;
    background: color-mix(in srgb, #e11d48 12%, transparent);
    color: #fb7185;
}
.expense-document-cell > div { min-width: 0; }
.expense-amount { font-variant-numeric: tabular-nums; text-align: right; }
.expense-status {
    display: inline-flex;
    width: fit-content;
    align-items: center;
    justify-content: center;
    padding: 0.3rem 0.58rem;
    border-radius: 999px;
    font-size: 0.7rem;
    font-weight: 800;
    white-space: nowrap;
}
.expense-status.is-draft { background: color-mix(in srgb, #94a3b8 16%, transparent); color: #94a3b8; }
.expense-status.is-pending { background: color-mix(in srgb, #f59e0b 16%, transparent); color: #f59e0b; }
.expense-status.is-approved { background: color-mix(in srgb, #22c55e 15%, transparent); color: #22c55e; }
.expense-status.is-rejected { background: color-mix(in srgb, #ef4444 15%, transparent); color: #ef4444; }
.expense-status.is-paid { background: color-mix(in srgb, #3b82f6 15%, transparent); color: #60a5fa; }
.expense-detail-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 0.9rem;
}
.expense-detail-head h1 { margin: 0.35rem 0 0.2rem; }
.expense-detail-head p { margin: 0; color: var(--text-muted); }
.expense-back { display: inline-flex; align-items: center; gap: 0.35rem; color: var(--text-muted); font-size: 0.78rem; font-weight: 700; text-decoration: none; }
.expense-back:hover { color: var(--text); }
.expense-detail-actions { display: flex; align-items: center; gap: 0.6rem; }
.expense-recognition-strip {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 1rem;
    padding: 0.7rem 0.85rem;
    border: 1px solid color-mix(in srgb, #f59e0b 35%, var(--border-line));
    border-radius: 12px;
    background: color-mix(in srgb, #f59e0b 7%, var(--surface));
    color: #f59e0b;
}
.expense-recognition-strip.is-recognized { border-color: color-mix(in srgb, #22c55e 35%, var(--border-line)); background: color-mix(in srgb, #22c55e 7%, var(--surface)); color: #22c55e; }
.expense-recognition-strip strong,
.expense-recognition-strip small { display: block; }
.expense-recognition-strip small { margin-top: 0.1rem; color: var(--text-muted); }
.expense-detail-layout {
    display: grid;
    grid-template-columns: minmax(300px, 0.78fr) minmax(500px, 1.22fr);
    align-items: start;
    gap: 1rem;
}
.expense-preview { position: sticky; top: 1rem; min-height: 520px; overflow: hidden; }
.expense-preview img,
.expense-preview iframe { display: block; width: 100%; min-height: 610px; border: 0; border-radius: 8px; object-fit: contain; background: #fff; }
.expense-file-placeholder { display: grid; min-height: 420px; place-items: center; align-content: center; gap: 1rem; color: var(--text-muted); }
.expense-file-placeholder .ui-icon { width: 3rem; height: 3rem; color: #fb7185; }
.expense-data-form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.8rem; }
.expense-data-form label { display: flex; min-width: 0; flex-direction: column; gap: 0.35rem; }
.expense-data-form label > span { font-size: 0.75rem; font-weight: 700; }
.expense-data-form label > small { color: var(--text-muted); font-size: 0.7rem; }
.expense-data-form .span-2 { grid-column: span 2; }
.expense-gross-field input { font-size: 1.05rem; font-weight: 800; }
.expense-approval-panel {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-top: 1rem;
}
.expense-approval-panel h2,
.expense-approval-panel p { margin: 0; }
.expense-approval-panel p { margin-top: 0.25rem; color: var(--text-muted); }
.expense-approval-actions,
.expense-reject-form { display: flex; align-items: center; gap: 0.55rem; }
.expense-reject-form .field-input { min-width: 220px; }
.expense-history { margin-top: 1rem; }
.expense-history article { display: flex; align-items: flex-start; gap: 0.7rem; padding: 0.65rem 0; border-top: 1px solid var(--border-line); }
.expense-history article:first-of-type { border-top: 0; }
.expense-history strong,
.expense-history small { display: block; }
.expense-history small { margin-top: 0.1rem; color: var(--text-muted); }
.expense-history-dot { width: 0.65rem; height: 0.65rem; margin-top: 0.25rem; border-radius: 50%; background: #94a3b8; }
.expense-history-dot.is-pending { background: #f59e0b; }
.expense-history-dot.is-approved { background: #22c55e; }
.expense-history-dot.is-rejected { background: #ef4444; }
.expense-history-dot.is-paid { background: #3b82f6; }
.expense-delete-form { margin-top: 1rem; text-align: right; }

@media (max-width: 1100px) {
    .expense-command-bar { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .expense-command-bar > *:nth-child(3) { border-right: 0; }
    .expense-command-bar > *:nth-child(n+4) { border-top: 1px solid var(--border-line); }
    .expense-ledger-head { display: none; }
    .expense-ledger-row { grid-template-columns: minmax(210px, 1.5fr) minmax(150px, 1fr) 120px 110px 1rem; }
    .expense-ledger-row > div:nth-child(3) { display: none; }
    .expense-detail-layout { grid-template-columns: minmax(270px, 0.65fr) minmax(430px, 1.35fr); }
}
@media (max-width: 800px) {
    .expense-workbench,
    .expense-detail-layout { grid-template-columns: 1fr; }
    .expense-preview { position: static; min-height: auto; }
    .expense-preview img,
    .expense-preview iframe { min-height: 420px; }
    .expense-ledger-row { grid-template-columns: minmax(0, 1fr) auto 1rem; gap: 0.7rem; }
    .expense-ledger-row > div:nth-child(2),
    .expense-ledger-row > div:nth-child(3) { display: none; }
    .expense-amount { text-align: left; }
    .expense-status { grid-column: 2; grid-row: 2; }
    .expense-ledger-row > span:last-child { grid-column: 3; grid-row: 1 / span 2; }
    .expense-approval-panel,
    .expense-approval-actions { align-items: stretch; flex-direction: column; }
    .expense-reject-form { align-items: stretch; flex-direction: column; }
}
@media (max-width: 560px) {
    .expense-command-bar { grid-template-columns: 1fr 1fr; }
    .expense-command-bar > * { border-top: 1px solid var(--border-line); }
    .expense-command-bar > *:nth-child(-n+2) { border-top: 0; }
    .expense-command-bar > *:nth-child(2n) { border-right: 0; }
    .expense-command-bar > *:last-child { grid-column: 1 / -1; }
    .expense-upload-zone { grid-template-columns: 1fr; }
    .expense-upload-zone .btn { width: 100%; }
    .expense-datev-box { grid-template-columns: 1fr 1fr; }
    .expense-datev-box > div { grid-column: 1 / -1; }
    .expense-detail-head { align-items: flex-start; flex-direction: column; }
    .expense-detail-actions { width: 100%; justify-content: space-between; }
    .expense-data-form { grid-template-columns: 1fr; }
    .expense-data-form .span-2 { grid-column: auto; }
}
@media (prefers-reduced-motion: reduce) {
    .expense-ledger-row { transition: none; }
}

/* Project costing */
.costing-intro { align-items: flex-end; }
.costing-kpis {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem;
    margin: 1rem 0;
}
.costing-kpis article {
    position: relative;
    overflow: hidden;
    min-height: 7.5rem;
    padding: 1.25rem;
    border: 1px solid var(--border);
    border-radius: 18px;
    background: linear-gradient(145deg, color-mix(in srgb, var(--surface) 94%, #8b5cf6 6%), var(--surface));
    box-shadow: var(--shadow-sm);
}
.costing-kpis article::after {
    position: absolute;
    right: -2.25rem;
    bottom: -3rem;
    width: 7rem;
    height: 7rem;
    border-radius: 50%;
    background: color-mix(in srgb, #8b5cf6 14%, transparent);
    content: '';
}
.costing-kpis article > * { position: relative; z-index: 1; display: block; }
.costing-kpis article span { color: var(--muted); font-size: .76rem; font-weight: 750; letter-spacing: .06em; text-transform: uppercase; }
.costing-kpis article strong { margin: .45rem 0 .2rem; font-size: clamp(1.45rem, 2vw, 2rem); line-height: 1.1; }
.costing-kpis article small { color: var(--muted); }
.costing-kpis article.is-positive strong { color: #22c55e; }
.costing-kpis article.is-negative strong { color: #ef4444; }
.costing-kpis--detail { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.costing-search { display: flex; gap: .75rem; margin-bottom: 1rem; padding: .8rem; }
.costing-search .field-input { flex: 1; }
.costing-project-list { overflow: hidden; padding: 0; }
.costing-project-list > .section-head { padding: 1.25rem 1.3rem .8rem; }
.costing-project-row {
    display: grid;
    grid-template-columns: minmax(15rem, 2fr) repeat(3, minmax(7rem, .7fr)) auto 1.5rem;
    gap: 1rem;
    align-items: center;
    padding: 1rem 1.3rem;
    border-top: 1px solid var(--border);
    color: inherit;
    text-decoration: none;
    transition: background .16s ease, transform .16s ease;
}
.costing-project-row:hover { background: color-mix(in srgb, var(--surface-2) 74%, #8b5cf6 6%); }
.costing-project-name { display: grid; min-width: 0; }
.costing-project-name span, .costing-project-row > div:not(.costing-project-name) span { color: var(--muted); font-size: .72rem; font-weight: 750; letter-spacing: .05em; text-transform: uppercase; }
.costing-project-name strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.costing-project-name small { color: var(--muted); }
.costing-project-row > div:not(.costing-project-name) { display: grid; gap: .2rem; }
.costing-status { display: inline-flex; align-items: center; justify-content: center; width: fit-content; padding: .38rem .65rem; border: 1px solid var(--border); border-radius: 999px; font-size: .72rem; font-weight: 800; white-space: nowrap; }
.costing-status.is-good { border-color: color-mix(in srgb, #22c55e 50%, var(--border)); background: color-mix(in srgb, #22c55e 12%, transparent); color: #22c55e; }
.costing-status.is-attention { border-color: color-mix(in srgb, #f59e0b 50%, var(--border)); background: color-mix(in srgb, #f59e0b 12%, transparent); color: #f59e0b; }
.costing-status.is-loss { border-color: color-mix(in srgb, #ef4444 50%, var(--border)); background: color-mix(in srgb, #ef4444 12%, transparent); color: #ef4444; }
.costing-status.is-open { color: var(--muted); }
.costing-row-arrow { color: #8b5cf6; }
.costing-detail-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; margin: 1.4rem 0 .25rem; }
.costing-detail-head h2 { margin: .1rem 0; font-size: clamp(1.55rem, 3vw, 2.25rem); }
.costing-detail-head p { margin: 0; color: var(--muted); }
.costing-detail-grid { display: grid; grid-template-columns: minmax(0, 1.7fr) minmax(18rem, .8fr); gap: 1rem; margin: 1rem 0; }
.costing-breakdown, .costing-settings, .costing-entries { padding: 1.25rem; }
.costing-bar-row { margin-top: 1.15rem; }
.costing-bar-row > div:first-child { display: flex; justify-content: space-between; gap: 1rem; margin-bottom: .45rem; }
.costing-bar-row small { display: block; margin-top: .4rem; color: var(--muted); }
.costing-bar { overflow: hidden; height: .55rem; border-radius: 999px; background: var(--surface-2); }
.costing-bar i { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #8b5cf6, #a78bfa); }
.costing-bar-row.is-material .costing-bar i { background: linear-gradient(90deg, #0d9488, #2dd4bf); }
.costing-bar-row.is-other .costing-bar i { background: linear-gradient(90deg, #f59e0b, #fbbf24); }
.costing-note { margin-top: 1rem; padding: .8rem .9rem; border: 1px solid color-mix(in srgb, #f59e0b 45%, var(--border)); border-radius: 12px; background: color-mix(in srgb, #f59e0b 9%, transparent); color: var(--text); font-size: .86rem; }
.costing-settings form { display: grid; gap: 1rem; }
.costing-settings label { display: grid; gap: .4rem; }
.costing-settings label > span, .costing-entry-form label > span { color: var(--muted); font-size: .76rem; font-weight: 750; text-transform: uppercase; }
.costing-entry-form { display: grid; grid-template-columns: 1fr 2fr .7fr .9fr 1fr auto; gap: .75rem; align-items: end; padding: 1rem; border: 1px solid var(--border); border-radius: 14px; background: var(--surface-2); }
.costing-entry-form label { display: grid; gap: .4rem; min-width: 0; }
.costing-entry-list { display: grid; margin-top: 1rem; }
.costing-entry-list article { display: grid; grid-template-columns: 2.4rem minmax(0, 1fr) auto auto; gap: .85rem; align-items: center; padding: .9rem 0; border-top: 1px solid var(--border); }
.costing-entry-list article:first-child { border-top: 0; }
.costing-entry-list article > div { display: grid; }
.costing-entry-list article small { color: var(--muted); }
.costing-entry-icon { display: grid; place-items: center; width: 2.35rem; height: 2.35rem; border-radius: 10px; background: color-mix(in srgb, #8b5cf6 13%, var(--surface-2)); color: #a78bfa; }
@media (max-width: 1100px) {
    .costing-kpis--detail { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .costing-project-row { grid-template-columns: minmax(13rem, 2fr) repeat(2, minmax(7rem, .7fr)) auto 1.5rem; }
    .costing-project-row > div:nth-child(2) { display: none; }
    .costing-entry-form { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .costing-entry-form .is-wide { grid-column: span 2; }
}
@media (max-width: 760px) {
    .costing-kpis, .costing-kpis--detail, .costing-detail-grid { grid-template-columns: 1fr; }
    .costing-project-row { grid-template-columns: minmax(0, 1fr) auto 1.25rem; gap: .6rem; }
    .costing-project-row > div:not(.costing-project-name), .costing-project-row > .costing-status { display: none; }
    .costing-entry-form { grid-template-columns: 1fr; }
    .costing-entry-form .is-wide { grid-column: auto; }
    .costing-entry-list article { grid-template-columns: 2.4rem minmax(0, 1fr) auto; }
    .costing-entry-list article > b { grid-column: 2; }
    .costing-detail-head { align-items: center; }
}

/* Lager & Einkauf */
.inventory-hero {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 2rem;
    padding: 1.1rem 0 1.5rem;
}
.inventory-hero h1 {
    margin: 0.18rem 0 0.35rem;
    font-size: clamp(2.35rem, 4vw, 4.2rem);
    font-weight: 300;
    letter-spacing: -0.045em;
    line-height: 0.98;
}
.inventory-hero p:not(.eyebrow) { margin: 0; color: var(--text-secondary); }
.inventory-tabs { margin-bottom: 1.2rem; }
.inventory-kpis {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.75rem;
    margin: 0 0 1rem;
}
.inventory-kpis article {
    position: relative;
    overflow: hidden;
    min-height: 126px;
    padding: 1rem 1.1rem;
    border: 1px solid var(--border-line);
    border-radius: 14px;
    background: linear-gradient(145deg, var(--bg-surface), color-mix(in srgb, var(--bg-elevated) 68%, transparent));
}
.inventory-kpis article::after {
    position: absolute;
    right: -22px;
    bottom: -32px;
    width: 92px;
    height: 92px;
    border-radius: 50%;
    background: var(--accent-soft);
    content: "";
}
.inventory-kpis span, .inventory-kpis small { display: block; color: var(--text-muted); font-size: 0.75rem; }
.inventory-kpis strong { display: block; margin: 0.3rem 0 0.18rem; font-size: 2rem; font-weight: 650; }
.inventory-kpis .is-warning strong { color: #f59e0b; }
.inventory-kpis .is-danger strong { color: var(--danger); }
.inventory-toolbar { margin-bottom: 1rem; border-radius: 12px; }
.inventory-toolbar form { flex: 1; }
.inventory-toolbar .resource-search { width: min(580px, 100%); }
.inventory-stock-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.85rem;
    margin-bottom: 1rem;
}
.inventory-stock-grid > .resource-empty { grid-column: 1 / -1; }
.inventory-stock-card {
    min-width: 0;
    padding: 1.1rem;
    border: 1px solid var(--border-line);
    border-radius: 15px;
    background: var(--bg-surface);
    transition: border-color 160ms ease, transform 160ms ease;
}
.inventory-stock-card:hover { transform: translateY(-2px); border-color: var(--border-line-strong); }
.inventory-stock-card.is-low { border-color: color-mix(in srgb, #f59e0b 48%, var(--border-line)); }
.inventory-stock-card.is-empty { border-color: color-mix(in srgb, var(--danger) 45%, var(--border-line)); }
.inventory-stock-card-head { display: flex; align-items: center; justify-content: space-between; }
.inventory-stock-icon {
    display: grid;
    width: 2rem;
    height: 2rem;
    place-items: center;
    border-radius: 9px;
    background: var(--accent-soft);
    color: var(--accent);
}
.inventory-stock-icon .ui-icon { width: 1rem; }
.inventory-stock-state {
    padding: 0.3rem 0.5rem;
    border-radius: 999px;
    background: color-mix(in srgb, #22c55e 12%, transparent);
    color: #22c55e;
    font-size: 0.68rem;
    font-weight: 800;
    letter-spacing: 0.05em;
    text-transform: uppercase;
}
.is-low .inventory-stock-state { background: color-mix(in srgb, #f59e0b 13%, transparent); color: #f59e0b; }
.is-empty .inventory-stock-state { background: color-mix(in srgb, var(--danger) 13%, transparent); color: var(--danger); }
.inventory-stock-card h2 { overflow: hidden; margin: 0.8rem 0 0.25rem; font-size: 1rem; text-overflow: ellipsis; white-space: nowrap; }
.inventory-stock-card > p { min-height: 2.4em; margin: 0; color: var(--text-muted); font-size: 0.76rem; line-height: 1.5; }
.inventory-stock-number { display: flex; align-items: baseline; gap: 0.45rem; margin: 1rem 0 0.5rem; }
.inventory-stock-number strong { font-size: 2.15rem; line-height: 1; }
.inventory-stock-number span { color: var(--text-muted); font-size: 0.78rem; }
.inventory-stock-bar, .purchase-order-progress > span {
    display: block;
    overflow: hidden;
    height: 5px;
    border-radius: 999px;
    background: var(--bg-elevated);
}
.inventory-stock-bar i, .purchase-order-progress i { display: block; height: 100%; border-radius: inherit; background: #22c55e; }
.is-low .inventory-stock-bar i { background: #f59e0b; }
.is-empty .inventory-stock-bar i { background: var(--danger); }
.inventory-stock-card footer { display: flex; justify-content: space-between; gap: 1rem; margin-top: 0.65rem; color: var(--text-muted); font-size: 0.71rem; }
.inventory-stock-card footer a { color: var(--accent); font-weight: 700; }
.inventory-booking-panel { margin-top: 1rem; border-radius: 15px; }
.inventory-booking-form { display: grid; grid-template-columns: minmax(220px, 1.4fr) 150px 120px minmax(220px, 1fr) auto; gap: 0.7rem; align-items: end; }
.inventory-booking-form label > span, .purchase-order-form label > span { display: block; margin-bottom: 0.35rem; color: var(--text-secondary); font-size: 0.73rem; font-weight: 700; }
.inventory-booking-form .btn { min-height: 42px; }
.inventory-movement-list { overflow: hidden; padding: 0; border-radius: 15px; }
.inventory-movement-row {
    display: grid;
    grid-template-columns: 120px minmax(220px, 1.6fr) 150px 100px 64px minmax(150px, 0.8fr);
    gap: 0.85rem;
    align-items: center;
    padding: 0.85rem 1rem;
    border-bottom: 1px solid var(--border-line);
}
.inventory-movement-row:last-child { border-bottom: 0; }
.inventory-movement-row time, .inventory-movement-row span { color: var(--text-muted); font-size: 0.74rem; }
.inventory-movement-row > div { min-width: 0; }
.inventory-movement-row > div strong, .inventory-movement-row > div span { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.inventory-movement-row > div span { margin-top: 0.18rem; }
.inventory-movement-type { padding: 0.3rem 0.45rem; border-radius: 7px; background: var(--bg-elevated); text-align: center; }
.inventory-movement-stock { font-family: "Cascadia Mono", monospace; }
.inventory-movement-delta { font-family: "Cascadia Mono", monospace; font-size: 1rem; text-align: right; }
.inventory-movement-delta.is-positive { color: #22c55e; }
.inventory-movement-delta.is-negative { color: var(--danger); }
.inventory-movement-user a { color: var(--accent); }
.purchase-order-list { display: grid; gap: 0.65rem; }
.purchase-order-card {
    display: grid;
    grid-template-columns: minmax(230px, 1.4fr) minmax(150px, 0.8fr) 120px 130px 70px;
    gap: 1rem;
    align-items: center;
    padding: 1rem 1.15rem;
    border: 1px solid var(--border-line);
    border-radius: 14px;
    background: var(--bg-surface);
    transition: border-color 160ms ease, background 160ms ease;
}
.purchase-order-card:hover { border-color: var(--border-line-strong); background: var(--bg-elevated); }
.purchase-order-number { color: var(--accent); font-family: "Cascadia Mono", monospace; font-size: 0.72rem; font-weight: 700; }
.purchase-order-card h2 { margin: 0.2rem 0; font-size: 1rem; }
.purchase-order-card small { color: var(--text-muted); font-size: 0.72rem; }
.purchase-order-progress small { display: block; margin-top: 0.35rem; }
.purchase-order-progress i { background: var(--accent); }
.purchase-status { display: inline-flex; justify-content: center; padding: 0.4rem 0.6rem; border-radius: 999px; background: var(--bg-elevated); color: var(--text-secondary); font-size: 0.7rem; font-weight: 800; }
.status-ordered { background: color-mix(in srgb, #3b82f6 13%, transparent); color: #60a5fa; }
.status-partially_received { background: color-mix(in srgb, #f59e0b 13%, transparent); color: #f59e0b; }
.status-received { background: color-mix(in srgb, #22c55e 13%, transparent); color: #22c55e; }
.status-cancelled { background: color-mix(in srgb, var(--danger) 13%, transparent); color: var(--danger); }
.purchase-order-open { color: var(--accent); font-size: 0.73rem; font-weight: 700; text-align: right; }
.purchase-order-form { display: grid; gap: 0.9rem; }
.purchase-order-form .surface { border-radius: 15px; }
.purchase-order-meta .form-grid { margin-bottom: 0.8rem; }
.purchase-order-meta label small { display: block; margin-top: 0.3rem; color: var(--text-muted); font-size: 0.67rem; }
.purchase-material-head, .purchase-material-row { display: grid; grid-template-columns: minmax(260px, 1fr) 90px 150px 170px; gap: 0.75rem; align-items: center; }
.purchase-material-head { padding: 0 0.7rem 0.45rem; color: var(--text-muted); font-size: 0.68rem; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; }
.purchase-material-row { padding: 0.65rem 0.7rem; border-top: 1px solid var(--border-line); }
.purchase-material-row > div:first-child { min-width: 0; }
.purchase-material-row strong, .purchase-material-row small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.purchase-material-row small { margin-top: 0.2rem; color: var(--text-muted); font-size: 0.7rem; }
.purchase-current { font-family: "Cascadia Mono", monospace; font-weight: 700; }
.purchase-current.is-low { color: #f59e0b; }
.money-field { position: relative; }
.money-field input { padding-right: 2rem; }
.money-field > span { position: absolute; right: 0.8rem; top: 50%; color: var(--text-muted); transform: translateY(-50%); }
.purchase-order-submit { display: flex; justify-content: flex-end; gap: 0.6rem; position: sticky; bottom: 0; z-index: 4; padding: 0.8rem; border: 1px solid var(--border-line); border-radius: 12px; background: color-mix(in srgb, var(--bg-base) 88%, transparent); backdrop-filter: blur(12px); }
.purchase-detail-actions { display: flex; align-items: center; gap: 0.6rem; }
.purchase-detail-grid { display: grid; grid-template-columns: minmax(0, 1fr) 330px; gap: 0.9rem; align-items: start; }
.purchase-detail-grid .surface { border-radius: 15px; }
.purchase-detail-side { display: grid; gap: 0.9rem; }
.purchase-detail-side h2 { margin: 0 0 0.45rem; font-size: 1rem; }
.purchase-detail-side .btn { width: 100%; margin-top: 0.7rem; }
.purchase-detail-row { display: grid; grid-template-columns: minmax(220px, 1fr) 75px 75px 65px 95px; gap: 0.6rem; align-items: center; padding: 0.75rem 0; border-top: 1px solid var(--border-line); }
.purchase-detail-row.is-head { padding-top: 0; border: 0; color: var(--text-muted); font-size: 0.68rem; font-weight: 700; text-transform: uppercase; }
.purchase-detail-row small { display: block; margin-top: 0.2rem; color: var(--text-muted); font-size: 0.69rem; }
.text-warning { color: #f59e0b; }
.text-success { color: #22c55e; }
.goods-receipt-form { display: grid; gap: 0.6rem; }
.goods-receipt-form label { display: grid; grid-template-columns: minmax(0, 1fr) 76px; gap: 0.6rem; align-items: center; }
.goods-receipt-form label > span { font-size: 0.73rem; font-weight: 700; }
.goods-receipt-form label small { display: block; color: var(--text-muted); font-weight: 400; }
.purchase-supplier { display: grid; gap: 0.3rem; }
.purchase-supplier a { color: var(--accent); font-size: 0.78rem; }
.purchase-supplier p { margin: 0.6rem 0 0; padding-top: 0.6rem; border-top: 1px solid var(--border-line); color: var(--text-secondary); font-size: 0.76rem; line-height: 1.5; }

@media (max-width: 1180px) {
    .inventory-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .inventory-stock-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .inventory-booking-form { grid-template-columns: 1fr 1fr 1fr; }
    .inventory-booking-reason { grid-column: span 2; }
    .inventory-movement-row { grid-template-columns: 105px minmax(180px, 1fr) 130px 88px 55px; }
    .inventory-movement-user { grid-column: 2 / -1; }
    .purchase-order-card { grid-template-columns: minmax(200px, 1.3fr) minmax(140px, 0.8fr) 100px 120px; }
    .purchase-order-open { display: none; }
}
@media (max-width: 820px) {
    .inventory-hero { align-items: flex-start; flex-direction: column; gap: 1rem; }
    .inventory-hero h1 { font-size: 2.6rem; }
    .inventory-stock-grid { grid-template-columns: 1fr; }
    .inventory-booking-form { grid-template-columns: 1fr 1fr; }
    .inventory-booking-reason { grid-column: span 2; }
    .inventory-movement-row { grid-template-columns: 92px minmax(0, 1fr) 55px; }
    .inventory-movement-type, .inventory-movement-stock { display: none; }
    .inventory-movement-user { grid-column: 2 / -1; }
    .purchase-order-card { grid-template-columns: minmax(0, 1fr) auto; }
    .purchase-order-progress { grid-column: 1; }
    .purchase-order-card > strong { grid-column: 2; grid-row: 1; }
    .purchase-status { grid-column: 2; grid-row: 2; }
    .purchase-material-head { display: none; }
    .purchase-material-row { grid-template-columns: minmax(0, 1fr) 70px 1fr; }
    .purchase-material-row .money-field { grid-column: 3; }
    .purchase-detail-grid { grid-template-columns: 1fr; }
    .purchase-detail-row { grid-template-columns: minmax(130px, 1fr) repeat(3, 54px); }
    .purchase-detail-row > :last-child { display: none; }
}
@media (max-width: 560px) {
    .inventory-kpis { grid-template-columns: 1fr 1fr; }
    .inventory-kpis article { min-height: 112px; padding: 0.8rem; }
    .inventory-kpis strong { font-size: 1.6rem; }
    .inventory-booking-form, .purchase-material-row { grid-template-columns: 1fr; }
    .inventory-booking-reason, .purchase-material-row .money-field { grid-column: auto; }
    .inventory-movement-row { grid-template-columns: 1fr auto; }
    .inventory-movement-row time { grid-column: 1 / -1; }
    .inventory-movement-user { grid-column: 1 / -1; }
    .purchase-order-card { padding: 0.85rem; }
    .purchase-detail-actions { align-items: stretch; flex-direction: column; width: 100%; }
    .purchase-detail-row { grid-template-columns: minmax(110px, 1fr) repeat(3, 44px); font-size: 0.78rem; }
}

/* Wartung & wiederkehrende Aufträge */
.maintenance-hero {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 2rem;
    padding: 1.1rem 0 1.5rem;
}
.maintenance-hero h1 {
    margin: 0.18rem 0 0.35rem;
    font-size: clamp(2.35rem, 4vw, 4.2rem);
    font-weight: 300;
    letter-spacing: -0.045em;
    line-height: 0.98;
}
.maintenance-hero p:not(.eyebrow) { max-width: 760px; margin: 0; color: var(--text-secondary); }
.maintenance-hero-actions { display: flex; gap: 0.6rem; align-items: center; }
.maintenance-kpis {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.75rem;
    margin-bottom: 1rem;
}
.maintenance-kpis > * {
    position: relative;
    overflow: hidden;
    min-height: 122px;
    padding: 1rem 1.1rem;
    border: 1px solid var(--border-line);
    border-radius: 14px;
    background: linear-gradient(145deg, var(--bg-surface), color-mix(in srgb, var(--bg-elevated) 68%, transparent));
}
.maintenance-kpis > *::after {
    position: absolute;
    right: -24px;
    bottom: -34px;
    width: 94px;
    height: 94px;
    border-radius: 50%;
    background: color-mix(in srgb, #f59e0b 12%, transparent);
    content: "";
}
.maintenance-kpis span, .maintenance-kpis small { display: block; color: var(--text-muted); font-size: 0.74rem; }
.maintenance-kpis strong { display: block; margin: 0.28rem 0 0.18rem; font-size: 2rem; }
.maintenance-kpis .is-danger strong { color: var(--danger); }
.maintenance-kpis .is-warning strong { color: #f59e0b; }
.maintenance-toolbar { margin-bottom: 0.9rem; border-radius: 12px; }
.maintenance-toolbar form { display: flex; flex: 1; gap: 0.55rem; align-items: center; }
.maintenance-toolbar .resource-search { width: min(580px, 100%); }
.maintenance-toolbar select { width: 165px; }
.maintenance-plan-list { display: grid; gap: 0.7rem; }
.maintenance-plan-card {
    display: grid;
    grid-template-columns: 78px minmax(260px, 1.45fr) minmax(250px, 0.85fr) auto;
    gap: 1rem;
    align-items: center;
    padding: 1rem;
    border: 1px solid var(--border-line);
    border-left: 4px solid #22c55e;
    border-radius: 15px;
    background: var(--bg-surface);
    transition: border-color 160ms ease, transform 160ms ease, box-shadow 160ms ease;
}
.maintenance-plan-card:hover { transform: translateY(-1px); border-color: var(--border-line-strong); }
.maintenance-plan-card.state-overdue { border-left-color: var(--danger); }
.maintenance-plan-card.state-due { border-left-color: #f59e0b; }
.maintenance-plan-card.state-inactive { border-left-color: var(--text-muted); opacity: 0.72; }
.maintenance-plan-card.is-highlighted { box-shadow: 0 0 0 2px color-mix(in srgb, var(--accent) 55%, transparent); }
.maintenance-plan-date {
    display: grid;
    min-height: 82px;
    place-content: center;
    border: 1px solid var(--border-line);
    border-radius: 12px;
    background: var(--bg-elevated);
    text-align: center;
}
.maintenance-plan-date span { color: var(--text-muted); font-size: 0.64rem; font-weight: 800; letter-spacing: 0.12em; text-transform: uppercase; }
.maintenance-plan-date strong { font-size: 1.7rem; line-height: 1.05; }
.maintenance-plan-date small { color: var(--text-muted); font-size: 0.66rem; }
.maintenance-plan-copy { min-width: 0; }
.maintenance-plan-heading { display: flex; gap: 0.4rem; align-items: center; }
.maintenance-state, .maintenance-interval {
    display: inline-flex;
    width: fit-content;
    padding: 0.28rem 0.5rem;
    border-radius: 999px;
    background: color-mix(in srgb, #22c55e 13%, transparent);
    color: #22c55e;
    font-size: 0.63rem;
    font-weight: 800;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}
.state-overdue .maintenance-state { background: color-mix(in srgb, var(--danger) 13%, transparent); color: var(--danger); }
.state-due .maintenance-state { background: color-mix(in srgb, #f59e0b 13%, transparent); color: #f59e0b; }
.state-inactive .maintenance-state { background: var(--bg-elevated); color: var(--text-muted); }
.maintenance-interval { background: var(--bg-elevated); color: var(--text-secondary); }
.maintenance-plan-copy h2 { overflow: hidden; margin: 0.42rem 0 0.15rem; font-size: 1.04rem; text-overflow: ellipsis; white-space: nowrap; }
.maintenance-plan-copy > a { color: var(--accent); font-size: 0.75rem; font-weight: 700; }
.maintenance-plan-copy > p { overflow: hidden; margin: 0.35rem 0 0; color: var(--text-muted); font-size: 0.73rem; text-overflow: ellipsis; white-space: nowrap; }
.maintenance-plan-meta { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.6rem; }
.maintenance-plan-meta > span { min-width: 0; padding: 0.58rem; border-radius: 9px; background: color-mix(in srgb, var(--bg-elevated) 78%, transparent); }
.maintenance-plan-meta small, .maintenance-plan-meta strong { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.maintenance-plan-meta small { margin-bottom: 0.2rem; color: var(--text-muted); font-size: 0.62rem; }
.maintenance-plan-meta strong { font-size: 0.72rem; }
.maintenance-plan-actions { display: flex; flex-direction: column; gap: 0.35rem; min-width: 132px; }
.maintenance-plan-actions form, .maintenance-plan-actions .btn { width: 100%; }
.maintenance-plan-actions .btn { justify-content: center; font-size: 0.7rem; }
.maintenance-history { grid-column: 2 / -1; padding-top: 0.65rem; border-top: 1px solid var(--border-line); }
.maintenance-history summary { color: var(--text-muted); cursor: pointer; font-size: 0.7rem; font-weight: 700; }
.maintenance-history > div { display: grid; gap: 0.35rem; margin-top: 0.55rem; }
.maintenance-history a { display: grid; grid-template-columns: 100px minmax(0, 1fr) 110px; gap: 0.6rem; padding: 0.48rem 0.6rem; border-radius: 8px; background: var(--bg-elevated); font-size: 0.7rem; }
.maintenance-history time { color: var(--text-muted); font-family: "Cascadia Mono", monospace; }
.maintenance-history strong { color: var(--accent); text-align: right; }
.maintenance-form { display: grid; gap: 0.9rem; }
.maintenance-form .surface { border-radius: 15px; }
.maintenance-form label > span { display: block; margin-bottom: 0.35rem; color: var(--text-secondary); font-size: 0.73rem; font-weight: 700; }
.maintenance-form-checks { display: flex; flex-wrap: wrap; gap: 0.7rem; margin-top: 0.9rem; }
.maintenance-form-checks label { display: flex; align-items: center; gap: 0.55rem; padding: 0.65rem 0.8rem; border: 1px solid var(--border-line); border-radius: 10px; background: var(--bg-elevated); }
.maintenance-form-checks label > span { margin: 0; }
.object-maintenance-list { display: grid; gap: 0.55rem; }
.object-maintenance-row {
    display: grid;
    grid-template-columns: 105px minmax(0, 1fr) 105px 75px;
    gap: 0.8rem;
    align-items: center;
    padding: 0.75rem 0.85rem;
    border: 1px solid var(--border-line);
    border-radius: 11px;
    background: var(--bg-elevated);
}
.object-maintenance-row:hover { border-color: var(--border-line-strong); }
.object-maintenance-row strong, .object-maintenance-row small { display: block; }
.object-maintenance-row small { margin-top: 0.18rem; color: var(--text-muted); font-size: 0.7rem; }
.object-maintenance-row time { font-family: "Cascadia Mono", monospace; font-size: 0.74rem; }
.object-maintenance-row > :last-child { color: var(--accent); font-size: 0.7rem; font-weight: 700; text-align: right; }

@media (max-width: 1180px) {
    .maintenance-plan-card { grid-template-columns: 72px minmax(220px, 1fr) minmax(220px, 0.8fr); }
    .maintenance-plan-actions { grid-column: 2 / -1; flex-direction: row; }
    .maintenance-plan-actions form, .maintenance-plan-actions .btn { width: auto; }
}
@media (max-width: 850px) {
    .maintenance-hero { align-items: flex-start; flex-direction: column; gap: 1rem; }
    .maintenance-hero h1 { font-size: 2.6rem; }
    .maintenance-kpis { grid-template-columns: 1fr 1fr; }
    .maintenance-toolbar, .maintenance-toolbar form { align-items: stretch; flex-direction: column; }
    .maintenance-toolbar select { width: 100%; }
    .maintenance-plan-card { grid-template-columns: 68px minmax(0, 1fr); }
    .maintenance-plan-meta { grid-column: 2; }
    .maintenance-plan-actions { grid-column: 2; }
}
@media (max-width: 560px) {
    .maintenance-hero-actions { align-items: stretch; flex-direction: column; width: 100%; }
    .maintenance-hero-actions form, .maintenance-hero-actions .btn { width: 100%; }
    .maintenance-kpis > * { min-height: 108px; padding: 0.8rem; }
    .maintenance-kpis strong { font-size: 1.55rem; }
    .maintenance-plan-card { grid-template-columns: 1fr; }
    .maintenance-plan-date { min-height: 60px; grid-auto-flow: column; gap: 0.35rem; align-items: baseline; }
    .maintenance-plan-meta, .maintenance-plan-actions { grid-column: 1; }
    .maintenance-history { grid-column: 1; }
    .maintenance-plan-meta { grid-template-columns: 1fr; }
    .maintenance-plan-actions { flex-direction: column; }
    .maintenance-plan-actions form, .maintenance-plan-actions .btn { width: 100%; }
    .object-maintenance-row { grid-template-columns: 1fr auto; }
    .object-maintenance-row .maintenance-state { grid-column: 1 / -1; }
    .object-maintenance-row > :last-child { display: none; }
}

/* Kaufmännische Dokumentenkette */
.project-sales-surface,
.sales-action-card {
    overflow: visible;
}
.project-sales-list {
    display: grid;
    gap: 0.85rem;
}
.sales-document-card {
    --sales-state: #f97316;
    position: relative;
    border: 1px solid color-mix(in srgb, var(--sales-state) 24%, var(--border-line));
    border-radius: 14px;
    background: color-mix(in srgb, var(--sales-state) 3%, var(--bg-base));
    transition: border-color 180ms ease-out, box-shadow 180ms ease-out;
}
.sales-document-card--sent { --sales-state: #3b82f6; }
.sales-document-card--accepted { --sales-state: #22c55e; }
.sales-document-card--rejected { --sales-state: #ef4444; }
.sales-document-card:hover,
.sales-document-card:focus-within {
    border-color: color-mix(in srgb, var(--sales-state) 46%, var(--border-line));
    box-shadow: 0 10px 26px rgba(0, 0, 0, 0.12);
}
.sales-document-open {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto auto;
    align-items: center;
    gap: 0.85rem;
    padding: 1rem;
    color: var(--text-primary);
    text-decoration: none;
}
.sales-document-icon,
.sales-detail-document-icon {
    display: grid;
    place-items: center;
    width: 2.7rem;
    height: 2.7rem;
    border-radius: 11px;
    background: color-mix(in srgb, #f97316 15%, transparent);
    color: #f97316;
}
.sales-document-icon .ui-icon,
.sales-detail-document-icon .ui-icon {
    width: 1.35rem;
    height: 1.35rem;
}
.sales-document-copy {
    display: grid;
    gap: 0.12rem;
    min-width: 0;
}
.sales-document-kicker,
.sales-detail-type {
    color: var(--sales-state, #f97316);
    font-size: 0.7rem;
    font-weight: 750;
}
.sales-document-copy strong {
    font-size: 1rem;
}
.sales-document-copy > span:last-child {
    color: var(--text-muted);
    font-size: 0.76rem;
}
.sales-document-total {
    font-size: 1rem;
    font-weight: 750;
    white-space: nowrap;
}
.sales-document-arrow {
    display: grid;
    place-items: center;
    width: 2rem;
    height: 2rem;
    border-radius: 50%;
    background: color-mix(in srgb, var(--sales-state, #f97316) 12%, transparent);
    color: var(--sales-state, #f97316);
}
.sales-document-arrow .ui-icon {
    width: 1rem;
    height: 1rem;
}
.object-commerce-file-main > .ui-icon:last-child {
    box-sizing: border-box;
    width: 1.8rem;
    height: 1.8rem;
    padding: 0.4rem;
    border-radius: 50%;
    background: color-mix(in srgb, #f97316 12%, transparent);
    color: #f97316;
}
.sales-document-chain {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    padding: 0.65rem 1rem;
    border-top: 1px solid var(--border-line);
    border-bottom: 1px solid var(--border-line);
    background: color-mix(in srgb, var(--bg-elevated) 72%, transparent);
}
.sales-chain-node {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    color: var(--text-muted);
    font-size: 0.72rem;
    font-weight: 650;
}
.sales-chain-node i {
    display: grid;
    place-items: center;
    width: 1.25rem;
    height: 1.25rem;
    border-radius: 50%;
    background: var(--bg-surface);
    color: var(--text-muted);
    font-style: normal;
}
.sales-chain-node i .ui-icon { width: 0.72rem; height: 0.72rem; }
.sales-chain-node.is-complete { color: var(--text-primary); }
.sales-chain-node.is-complete i { background: color-mix(in srgb, #22c55e 16%, transparent); color: #22c55e; }
.sales-chain-connector {
    width: 2rem;
    height: 1px;
    background: var(--border-line-strong);
}
.sales-document-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.7rem 1rem;
}
.sales-document-footer > .muted { font-size: 0.75rem; }
.sales-document-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.45rem;
}
.sales-more-menu {
    position: relative;
}
.sales-more-menu summary {
    display: grid;
    place-items: center;
    min-width: 2.1rem;
    height: 2.1rem;
    padding: 0 0.45rem;
    border: 1px solid var(--border-line);
    border-radius: 8px;
    background: var(--bg-surface);
    color: var(--text-muted);
    cursor: pointer;
    list-style: none;
}
.sales-more-menu summary::-webkit-details-marker { display: none; }
.sales-more-menu summary:hover,
.sales-more-menu[open] summary { color: var(--text-primary); background: var(--bg-elevated); }
.sales-more-menu summary .ui-icon { width: 1rem; height: 1rem; }
.sales-more-popover {
    position: absolute;
    z-index: 45;
    right: 0;
    bottom: calc(100% + 0.4rem);
    display: grid;
    width: max-content;
    min-width: 13rem;
    padding: 0.35rem;
    border: 1px solid var(--border-line);
    border-radius: 10px;
    background: var(--bg-surface);
    box-shadow: 0 16px 38px rgba(0, 0, 0, 0.25);
}
.sales-more-popover a,
.sales-more-popover button {
    display: block;
    width: 100%;
    padding: 0.58rem 0.65rem;
    border: 0;
    border-radius: 7px;
    background: transparent;
    color: var(--text-primary);
    font: inherit;
    font-size: 0.78rem;
    text-align: left;
    text-decoration: none;
    cursor: pointer;
}
.sales-more-popover a:hover,
.sales-more-popover button:hover { background: var(--bg-elevated); }
.sales-more-popover button.danger { color: #ef4444; }

.sales-detail-hero {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 2rem;
    margin-bottom: 1rem;
    padding: 1.35rem 1.5rem;
    border: 1px solid color-mix(in srgb, #f97316 34%, var(--border-line));
    border-radius: 18px;
    background: color-mix(in srgb, #f97316 10%, var(--bg-surface));
}
.sales-detail-back {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    margin-bottom: 1rem;
    color: var(--text-secondary);
    font-size: 0.76rem;
    font-weight: 650;
    text-decoration: none;
}
.sales-detail-back .ui-icon { width: 0.9rem; height: 0.9rem; }
.sales-detail-title-line {
    display: flex;
    align-items: center;
    gap: 0.85rem;
}
.sales-detail-title-line h1 {
    margin: 0.08rem 0 0;
    font-size: 1.65rem;
    line-height: 1.1;
}
.sales-detail-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.45rem 0.85rem;
    margin-top: 0.8rem;
    color: var(--text-secondary);
    font-size: 0.78rem;
}
.sales-detail-meta a {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    color: inherit;
    text-decoration: none;
}
.sales-detail-meta a:hover { color: #f97316; }
.sales-detail-meta .ui-icon { width: 0.9rem; height: 0.9rem; }
.sales-status {
    padding: 0.25rem 0.55rem;
    border-radius: 999px;
    background: color-mix(in srgb, #f97316 14%, transparent);
    color: #f97316;
    font-weight: 750;
}
.sales-status--sent { background: color-mix(in srgb, #3b82f6 14%, transparent); color: #60a5fa; }
.sales-status--accepted { background: color-mix(in srgb, #22c55e 14%, transparent); color: #4ade80; }
.sales-status--rejected { background: color-mix(in srgb, #ef4444 14%, transparent); color: #f87171; }
.quote-overview-surface { overflow: hidden; }
.quote-overview-summary {
    display: flex;
    border-bottom: 1px solid var(--border-line);
    background: var(--bg-base);
}
.quote-overview-summary > div {
    display: flex;
    align-items: baseline;
    gap: 0.45rem;
    padding: 0.8rem 1rem;
    border-right: 1px solid var(--border-line);
}
.quote-overview-summary > div:last-child { border-right: 0; }
.quote-overview-summary strong { color: var(--text-primary); font-size: 1rem; font-variant-numeric: tabular-nums; }
.quote-overview-summary span { color: var(--text-secondary); font-size: 0.74rem; }
.quote-overview-toolbar {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    padding: 0.85rem 1rem;
    border-bottom: 1px solid var(--border-line);
}
.quote-overview-toolbar label:first-of-type { width: min(100%, 34rem); }
.quote-overview-toolbar label:nth-of-type(2) { width: min(100%, 13rem); }
.quote-overview-empty { display: grid; gap: 0.3rem; margin: 1rem; }
.quote-overview-empty span { color: var(--text-muted); }
.quote-project-list { display: grid; }
.quote-project-group { border-bottom: 1px solid var(--border-line); }
.quote-project-group:last-child { border-bottom: 0; }
.quote-project-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.8rem 1rem;
    background: var(--bg-elevated);
}
.quote-project-head > div:first-child { display: grid; min-width: 0; gap: 0.18rem; }
.quote-project-head a { display: flex; min-width: 0; align-items: baseline; gap: 0.55rem; color: inherit; }
.quote-project-head a strong { flex: 0 0 auto; color: var(--text-secondary); font-family: "Cascadia Mono", Consolas, monospace; font-size: 0.72rem; }
.quote-project-head a span { overflow: hidden; color: var(--text-primary); font-size: 0.88rem; font-weight: 750; text-overflow: ellipsis; white-space: nowrap; }
.quote-project-head small { color: var(--text-muted); font-size: 0.7rem; }
.quote-project-head > div:last-child { display: flex; flex: 0 0 auto; align-items: baseline; gap: 0.7rem; }
.quote-project-head > div:last-child span { color: var(--text-muted); font-size: 0.7rem; }
.quote-project-head > div:last-child strong { color: var(--text-primary); font-size: 0.84rem; font-variant-numeric: tabular-nums; }
.quote-project-rows { display: grid; }
.quote-project-row {
    display: grid;
    min-height: 66px;
    grid-template-columns: 2.2rem minmax(180px, 1fr) auto minmax(100px, auto) 1.5rem;
    align-items: center;
    gap: 0.8rem;
    padding: 0.65rem 1rem;
    border-top: 1px solid var(--border-line);
    color: inherit;
    transition: background-color 150ms ease;
}
.quote-project-row:hover { background: color-mix(in srgb, var(--accent) 5%, var(--bg-base)); }
.quote-project-row:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
.quote-project-icon {
    display: grid;
    width: 2.1rem;
    height: 2.1rem;
    place-items: center;
    border-radius: 8px;
    background: color-mix(in srgb, #f97316 13%, transparent);
    color: #f97316;
}
.quote-project-icon .ui-icon { width: 1rem; height: 1rem; }
.quote-project-copy { display: grid; min-width: 0; gap: 0.15rem; }
.quote-project-copy strong { overflow: hidden; color: var(--text-primary); font-size: 0.86rem; text-overflow: ellipsis; white-space: nowrap; }
.quote-project-copy small { overflow: hidden; color: var(--text-muted); font-size: 0.7rem; text-overflow: ellipsis; white-space: nowrap; }
.quote-project-row .sales-status { justify-self: start; font-size: 0.68rem; white-space: nowrap; }
.quote-project-total { color: var(--text-primary); font-size: 0.84rem; font-variant-numeric: tabular-nums; text-align: right; white-space: nowrap; }
.quote-project-open { display: grid; place-items: center; color: var(--text-secondary); }
.quote-project-open .ui-icon { width: 1rem; height: 1rem; }
.quote-project-row:hover .quote-project-open { color: var(--accent); }
@media (max-width: 680px) {
    .quote-overview-summary { display: grid; grid-template-columns: 1fr 1fr; }
    .quote-overview-summary > div { display: grid; justify-items: center; gap: 0.1rem; text-align: center; }
    .quote-overview-summary > div:nth-child(2) { border-right: 0; }
    .quote-overview-summary > div:last-child { grid-column: 1 / -1; border-top: 1px solid var(--border-line); }
    .quote-overview-toolbar { align-items: stretch; flex-direction: column; }
    .quote-overview-toolbar label:first-of-type,
    .quote-overview-toolbar label:nth-of-type(2) { width: 100%; }
    .quote-project-head { align-items: flex-start; flex-direction: column; gap: 0.45rem; }
    .quote-project-head > div:last-child { width: 100%; justify-content: space-between; }
    .quote-project-row {
        min-height: 94px;
        grid-template-columns: 2.2rem minmax(0, 1fr) 1.5rem;
        grid-template-rows: auto auto auto;
        gap: 0.28rem 0.65rem;
    }
    .quote-project-icon { grid-column: 1; grid-row: 1 / 4; align-self: start; }
    .quote-project-copy { grid-column: 2; grid-row: 1; }
    .quote-project-row .sales-status { grid-column: 2; grid-row: 2; }
    .quote-project-total { grid-column: 2; grid-row: 3; text-align: left; }
    .quote-project-open { grid-column: 3; grid-row: 1 / 4; }
}
.sales-detail-total {
    display: grid;
    flex: 0 0 auto;
    gap: 0.15rem;
    text-align: right;
}
.sales-detail-total span,
.sales-detail-total small { color: var(--text-muted); font-size: 0.72rem; }
.sales-detail-total strong { font-size: 1.55rem; color: #fb923c; }
.sales-lifecycle {
    display: grid;
    grid-template-columns: minmax(130px, 1fr) 32px minmax(155px, 1fr) 32px minmax(130px, 1fr) 32px minmax(110px, 0.8fr);
    align-items: center;
    gap: 0.25rem;
    padding: 0.85rem 1rem;
    overflow-x: auto;
}
.sales-lifecycle-step {
    display: flex;
    align-items: center;
    gap: 0.55rem;
    min-width: 0;
    color: var(--text-muted);
    text-decoration: none;
}
.sales-lifecycle-step > span:last-child { display: grid; min-width: 0; }
.sales-lifecycle-step small { font-size: 0.62rem; }
.sales-lifecycle-step strong { overflow: hidden; color: var(--text-secondary); font-size: 0.77rem; text-overflow: ellipsis; white-space: nowrap; }
.sales-lifecycle-step em { font-size: 0.64rem; font-style: normal; }
.sales-lifecycle-marker {
    display: grid;
    place-items: center;
    flex: 0 0 1.8rem;
    width: 1.8rem;
    height: 1.8rem;
    border-radius: 50%;
    background: var(--bg-elevated);
    color: var(--text-muted);
}
.sales-lifecycle-marker .ui-icon { width: 0.85rem; height: 0.85rem; }
.sales-lifecycle-step.is-complete .sales-lifecycle-marker { background: color-mix(in srgb, #22c55e 16%, transparent); color: #22c55e; }
.sales-lifecycle-step.is-next .sales-lifecycle-marker { background: color-mix(in srgb, #f97316 16%, transparent); color: #f97316; }
.sales-lifecycle-step.is-complete strong,
.sales-lifecycle-step.is-next strong { color: var(--text-primary); }
.sales-lifecycle-line { height: 2px; background: var(--border-line-strong); }
.sales-lifecycle-line.is-complete { background: #22c55e; }
.sales-detail-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 320px;
    gap: 1rem;
    align-items: start;
}
.sales-detail-main { min-width: 0; }
.sales-position-panel,
.sales-order-panel,
.sales-invoice-panel,
.sales-action-card { padding: 1rem; }
.sales-position-table th:last-child,
.sales-position-table td:last-child { text-align: right; }
.sales-position-total {
    display: flex;
    align-items: baseline;
    justify-content: flex-end;
    gap: 1rem;
    padding: 0.85rem 0.3rem 0;
}
.sales-position-total span { color: var(--text-muted); font-size: 0.78rem; }
.sales-position-total strong { font-size: 1.15rem; }
.sales-order-facts {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.75rem;
}
.sales-order-facts > div {
    display: grid;
    gap: 0.2rem;
    padding: 0.7rem;
    border-radius: 9px;
    background: var(--bg-elevated);
}
.sales-order-facts .wide { grid-column: 1 / -1; }
.sales-order-facts span { color: var(--text-muted); font-size: 0.7rem; }
.sales-order-facts strong { font-size: 0.8rem; line-height: 1.45; }
.sales-invoice-list { display: grid; }
.sales-invoice-list > a {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto auto;
    align-items: center;
    gap: 0.65rem;
    padding: 0.7rem 0;
    border-bottom: 1px solid var(--border-line);
    color: var(--text-primary);
    text-decoration: none;
}
.sales-invoice-list > a:last-child { border-bottom: 0; }
.sales-invoice-list span:nth-child(2) { display: grid; }
.sales-invoice-list small { color: var(--text-muted); }
.sales-invoice-list b { font-size: 0.82rem; }
.sales-invoice-list > a > .ui-icon { width: 1rem; height: 1rem; color: #f97316; }
.sales-invoice-icon {
    display: grid;
    place-items: center;
    width: 2rem;
    height: 2rem;
    border-radius: 8px;
    background: color-mix(in srgb, #f97316 13%, transparent);
    color: #f97316;
}
.sales-invoice-icon .ui-icon { width: 1rem; height: 1rem; }
.sales-action-panel { position: sticky; top: 1rem; }
.sales-action-card { display: grid; gap: 0.75rem; }
.sales-action-card-head {
    display: flex;
    align-items: center;
    gap: 0.65rem;
    padding-bottom: 0.75rem;
    border-bottom: 1px solid var(--border-line);
}
.sales-action-card-head > div { display: grid; }
.sales-action-card-head small { color: var(--text-muted); }
.sales-primary-action { justify-content: center; width: 100%; }
.sales-action-card form { margin: 0; }
.sales-action-card form .btn { justify-content: center; width: 100%; }
.sales-action-group {
    display: grid;
    gap: 0.45rem;
    padding-top: 0.75rem;
    border-top: 1px solid var(--border-line);
}
.sales-action-group > span:first-child { color: var(--text-muted); font-size: 0.7rem; font-weight: 700; }
.sales-document-link {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    padding: 0.55rem 0.6rem;
    border-radius: 8px;
    background: var(--bg-elevated);
    color: var(--text-primary);
    font-size: 0.77rem;
    text-decoration: none;
}
.sales-document-link .ui-icon { width: 0.9rem; height: 0.9rem; color: #f97316; }
.sales-billing-complete { display: flex; align-items: center; gap: 0.35rem; color: #22c55e; font-size: 0.78rem; }
.sales-billing-complete .ui-icon { width: 0.9rem; height: 0.9rem; }
.sales-action-more summary { display: flex; gap: 0.4rem; width: 100%; }
.sales-action-more .sales-more-popover { top: calc(100% + 0.35rem); bottom: auto; }
.sales-object-file-link {
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: 0.65rem;
    padding: 0.8rem;
    border: 1px solid color-mix(in srgb, #f97316 24%, var(--border-line));
    border-radius: 11px;
    background: color-mix(in srgb, #f97316 6%, var(--bg-surface));
    color: var(--text-primary);
    text-decoration: none;
}
.sales-object-file-link > .ui-icon { width: 1rem; height: 1rem; color: #f97316; }
.sales-object-file-link span { display: grid; }
.sales-object-file-link small { color: var(--text-muted); font-size: 0.68rem; }

.object-commerce-list { display: grid; gap: 1rem; }
.object-commerce-chain {
    border: 1px solid color-mix(in srgb, #f97316 22%, var(--border-line));
    border-radius: 13px;
    background: var(--bg-base);
}
.object-commerce-chain > header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.7rem 0.85rem;
    border-bottom: 1px solid var(--border-line);
    background: color-mix(in srgb, #f97316 7%, var(--bg-elevated));
}
.object-commerce-chain > header a { color: var(--text-primary); font-size: 0.78rem; font-weight: 700; text-decoration: none; }
.object-commerce-chain > header span { color: #f97316; font-size: 0.68rem; font-weight: 700; }
.object-commerce-documents { display: grid; }
.object-commerce-file {
    display: flex;
    align-items: center;
    gap: 0.55rem;
    padding: 0 0.8rem;
    border-bottom: 1px solid var(--border-line);
}
.object-commerce-file:last-child { border-bottom: 0; }
.object-commerce-file-main {
    display: grid;
    flex: 1;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: 0.65rem;
    padding: 0.7rem 0;
    color: var(--text-primary);
    text-decoration: none;
}
.object-commerce-file-main > span:nth-child(2) { display: grid; }
.object-commerce-file-main small { color: #f97316; font-size: 0.65rem; font-weight: 700; }
.object-commerce-file-main strong { font-size: 0.83rem; }
.object-commerce-file-main em { color: var(--text-muted); font-size: 0.7rem; font-style: normal; }
.object-commerce-file-icon {
    display: grid;
    place-items: center;
    width: 2rem;
    height: 2rem;
    border-radius: 8px;
    background: color-mix(in srgb, #f97316 12%, transparent);
    color: #f97316;
}
.object-commerce-file-icon .ui-icon { width: 1rem; height: 1rem; }
.object-commerce-pdf {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    padding: 0.4rem 0.5rem;
    border-radius: 7px;
    background: var(--bg-elevated);
    color: var(--text-secondary);
    font-size: 0.68rem;
    font-weight: 700;
    text-decoration: none;
}
.object-commerce-pdf .ui-icon { width: 0.8rem; height: 0.8rem; }

/* Ressourcen: Material, Fuhrpark, Geräte, Kataloge und Dokumente */
.resource-hero {
    --resource-tone: #f97316;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.25rem;
    margin-bottom: 0.8rem;
    padding: 1.15rem 1.3rem;
    border: 1px solid color-mix(in srgb, var(--resource-tone) 30%, var(--border-line));
    border-radius: 14px;
    background: linear-gradient(112deg, color-mix(in srgb, var(--resource-tone) 13%, var(--bg-base)), var(--bg-base) 64%);
}
.resource-hero--material { --resource-tone: #14b8a6; }
.resource-hero--fleet { --resource-tone: #3b82f6; }
.resource-hero--equipment { --resource-tone: #f97316; }
.resource-hero--catalog { --resource-tone: #8b5cf6; }
.resource-hero--documents { --resource-tone: #06b6d4; }
.resource-hero > div:first-child { display: flex; align-items: center; gap: 0.85rem; min-width: 0; }
.resource-hero-icon { display: grid; place-items: center; flex: 0 0 auto; width: 2.8rem; height: 2.8rem; border-radius: 11px; background: color-mix(in srgb, var(--resource-tone) 16%, transparent); color: var(--resource-tone); }
.resource-hero-icon .ui-icon { width: 1.25rem; height: 1.25rem; }
.resource-hero h1 { margin: 0 0 0.18rem; font-size: 1.55rem; letter-spacing: -0.035em; }
.resource-hero p { margin: 0; color: var(--text-secondary); font-size: 0.75rem; }
.resource-hero .intro-actions { display: flex; align-items: center; flex-wrap: wrap; justify-content: flex-end; gap: 0.45rem; }
.resource-hero-count { display: grid; justify-items: end; }
.resource-hero-count strong { color: var(--resource-tone); font-size: 1.35rem; }
.resource-hero-count small { color: var(--text-muted); font-size: 0.65rem; }
.resource-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 0.75rem; padding: 0.65rem 0.75rem; border: 1px solid var(--border-line); border-radius: 11px; background: var(--bg-elevated); }
.resource-toolbar > form { display: flex; align-items: center; gap: 0.5rem; width: min(780px, 100%); margin: 0; }
.resource-toolbar > span { color: var(--text-muted); font-size: 0.68rem; white-space: nowrap; }
.resource-search { display: flex; align-items: center; gap: 0.45rem; flex: 1; min-height: 40px; padding: 0 0.75rem; border: 1px solid var(--border-input); border-radius: var(--radius-input, 8px); background: var(--bg-base); color: var(--text-muted); }
.resource-search:focus-within { border-color: #f97316; box-shadow: 0 0 0 3px color-mix(in srgb, #f97316 12%, transparent); }
.resource-search .ui-icon { width: 0.95rem; height: 0.95rem; }
.resource-search input { min-width: 0; width: 100%; border: 0; outline: 0; background: transparent; color: var(--text-primary); font: inherit; font-size: 0.75rem; }
.resource-search input::placeholder { color: var(--text-secondary); }
.resource-archive-toggle { display: inline-flex; align-items: center; gap: 0.4rem; color: var(--text-secondary); font-size: 0.68rem; white-space: nowrap; }
.resource-master-detail { display: grid; grid-template-columns: 1fr; align-items: start; gap: 0.8rem; }
.resource-master-detail.has-editor { grid-template-columns: minmax(0, 1fr) minmax(290px, 0.38fr); }
.resource-list { display: grid; overflow: hidden; border: 1px solid var(--border-line); border-radius: 12px; background: var(--bg-base); }
.resource-row { display: grid; grid-template-columns: auto minmax(200px, 1fr) minmax(80px, 0.25fr) auto auto; align-items: center; gap: 0.8rem; min-height: 72px; padding: 0.75rem 0.9rem; border-bottom: 1px solid var(--border-line); transition: background 180ms ease-out; }
.resource-row:last-child { border-bottom: 0; }
.resource-row:hover { background: color-mix(in srgb, #14b8a6 6%, var(--bg-base)); }
.resource-row.is-archived { opacity: 0.67; }
.resource-row-icon { display: grid; place-items: center; width: 2.15rem; height: 2.15rem; border-radius: 9px; background: color-mix(in srgb, #14b8a6 14%, transparent); color: #14b8a6; }
.resource-row-icon .ui-icon { width: 0.95rem; height: 0.95rem; }
.resource-row > div { display: grid; min-width: 0; gap: 0.18rem; }
.resource-row > div strong { font-size: 0.8rem; }
.resource-row > div small { overflow: hidden; color: var(--text-muted); font-size: 0.66rem; text-overflow: ellipsis; white-space: nowrap; }
.resource-data { display: grid; }
.resource-data small { color: var(--text-muted); font-size: 0.58rem; }
.resource-data strong { font-size: 0.72rem; }
.resource-status { padding: 0.28rem 0.5rem; border-radius: 999px; background: color-mix(in srgb, #22c55e 13%, transparent); color: #4ade80; font-size: 0.62rem; font-weight: 750; }
.resource-status.is-muted { background: var(--bg-elevated); color: var(--text-muted); }
.resource-edit, .resource-open { display: grid; place-items: center; width: 1.85rem; height: 1.85rem; border-radius: 8px; background: var(--bg-elevated); color: var(--text-secondary); }
.resource-edit:hover, .resource-open:hover { background: color-mix(in srgb, #f97316 13%, transparent); color: #f97316; }
.resource-edit .ui-icon, .resource-open .ui-icon { width: 0.85rem; height: 0.85rem; }
.resource-editor { position: sticky; top: 1rem; display: grid; gap: 0.8rem; padding: 1rem; border: 1px solid color-mix(in srgb, #14b8a6 30%, var(--border-line)); border-radius: 12px; background: var(--bg-base); }
.resource-editor-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; }
.resource-editor-head small { color: #14b8a6; font-size: 0.65rem; font-weight: 750; }
.resource-editor-head h2 { margin: 0.1rem 0 0; font-size: 1rem; }
.resource-editor-head > a { color: var(--text-muted); }
.resource-editor-head .ui-icon { width: 1rem; height: 1rem; }
.resource-editor .tenant-form { display: grid; gap: 0.7rem; margin: 0; }
.resource-editor label { display: grid; gap: 0.25rem; }
.resource-editor label > span { color: var(--text-secondary); font-size: 0.67rem; }
.resource-editor-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 0.5rem; }
.resource-editor .btn { justify-content: center; width: 100%; }
.resource-editor > form:last-child { margin: 0; }
.resource-import { margin-top: 0.75rem; border: 1px solid var(--border-line); border-radius: 10px; background: var(--bg-elevated); }
.resource-import summary { display: flex; align-items: center; gap: 0.45rem; padding: 0.75rem; color: var(--text-secondary); font-size: 0.7rem; font-weight: 750; cursor: pointer; }
.resource-import summary .ui-icon { width: 0.9rem; height: 0.9rem; }
.resource-import > form { display: flex; gap: 0.5rem; margin: 0; padding: 0 0.75rem 0.75rem; }
.resource-empty { display: flex; align-items: center; gap: 0.75rem; padding: 1.6rem; color: var(--text-muted); }
.resource-empty > .ui-icon { width: 1.6rem; height: 1.6rem; color: #14b8a6; }
.resource-empty > div { display: grid; gap: 0.2rem; }
.resource-empty strong { color: var(--text-primary); font-size: 0.82rem; }
.resource-empty span { font-size: 0.68rem; }

.fleet-modern-surface, .resource-equipment-surface, .resource-catalog-surface, .resource-documents-surface { overflow: hidden; padding: 0.8rem; }
.fleet-modern-surface .fleet-search, .resource-equipment-surface .fleet-search { margin-bottom: 0.75rem; padding: 0.65rem; border-radius: 9px; background: var(--bg-elevated); }
.fleet-modern-table, .resource-catalog-table, .resource-documents-table, .fleet-equipment-table { border-collapse: separate; border-spacing: 0 0.42rem; }
.fleet-modern-table thead, .resource-catalog-table thead, .resource-documents-table thead, .fleet-equipment-table thead { color: var(--text-muted); font-size: 0.62rem; }
.fleet-modern-table tbody tr, .resource-catalog-table tbody tr, .resource-documents-table tbody tr, .fleet-equipment-table tbody tr { background: var(--bg-elevated); transition: background 180ms ease-out, transform 180ms ease-out; }
.fleet-modern-table tbody tr:hover, .resource-catalog-table tbody tr:hover, .resource-documents-table tbody tr:hover, .fleet-equipment-table tbody tr:hover { background: color-mix(in srgb, #f97316 7%, var(--bg-elevated)); transform: translateY(-1px); }
.fleet-modern-table tbody td:first-child, .resource-catalog-table tbody td:first-child, .resource-documents-table tbody td:first-child, .fleet-equipment-table tbody td:first-child { border-radius: 9px 0 0 9px; }
.fleet-modern-table tbody td:last-child, .resource-catalog-table tbody td:last-child, .resource-documents-table tbody td:last-child, .fleet-equipment-table tbody td:last-child { border-radius: 0 9px 9px 0; }
.fleet-modern-table td, .resource-catalog-table td, .resource-documents-table td, .fleet-equipment-table td { border: 0 !important; }
.fleet-modern-table td:first-child strong { display: inline-flex; padding: 0.32rem 0.55rem; border: 1px solid color-mix(in srgb, #3b82f6 35%, var(--border-line)); border-radius: 7px; background: color-mix(in srgb, #3b82f6 10%, transparent); color: #60a5fa; letter-spacing: 0.04em; }
.fleet-reminder-panel { border-color: color-mix(in srgb, #eab308 30%, var(--border-line)); background: color-mix(in srgb, #eab308 5%, var(--bg-base)); }
.resource-catalog-table td:first-child strong { color: #a78bfa; }
.resource-documents-table td:first-child strong { color: #22d3ee; }
.resource-documents-table .actions, .resource-catalog-table .actions { justify-content: flex-end; }
.resource-equipment-surface .fleet-equipment-split { gap: 0.8rem; }
.resource-equipment-surface .fleet-assign-panel { border-color: color-mix(in srgb, #f97316 30%, var(--border-line)); background: color-mix(in srgb, #f97316 5%, var(--bg-base)); }

/* Leistungskatalog: Leistungen zuerst, Verwaltung als Nebenaktion */
.catalog-picker-surface { overflow: visible; padding: 0; background: transparent; border: 0; box-shadow: none; }
.catalog-picker-heading { display: flex; align-items: end; justify-content: space-between; gap: 1rem; margin-bottom: 0.7rem; padding: 0 0.15rem; }
.catalog-picker-heading h2 { margin: 0.12rem 0 0; font-size: 1.05rem; }
.catalog-picker-heading p { max-width: 52ch; margin: 0; color: var(--text-muted); font-size: 0.7rem; text-align: right; }
.catalog-picker-list { display: grid; gap: 0.65rem; }
.catalog-picker-group { overflow: hidden; border: 1px solid var(--border-line); border-radius: 13px; background: var(--bg-base); }
.catalog-picker-group[open] { border-color: color-mix(in srgb, #8b5cf6 38%, var(--border-line)); }
.catalog-picker-group > summary { display: grid; grid-template-columns: auto minmax(0, 1fr) auto auto; align-items: center; gap: 0.75rem; min-height: 68px; padding: 0.72rem 0.85rem; cursor: pointer; list-style: none; transition: background 180ms ease-out; }
.catalog-picker-group > summary::-webkit-details-marker { display: none; }
.catalog-picker-group > summary:hover { background: color-mix(in srgb, #8b5cf6 6%, var(--bg-base)); }
.catalog-picker-group > summary:focus-visible { outline: 2px solid #8b5cf6; outline-offset: -2px; }
.catalog-picker-symbol { display: grid; place-items: center; width: 2.2rem; height: 2.2rem; border-radius: 9px; background: color-mix(in srgb, #8b5cf6 15%, transparent); color: #a78bfa; }
.catalog-picker-symbol .ui-icon { width: 0.95rem; height: 0.95rem; }
.catalog-picker-title { display: grid; min-width: 0; gap: 0.15rem; }
.catalog-picker-title strong { overflow: hidden; font-size: 0.82rem; text-overflow: ellipsis; white-space: nowrap; }
.catalog-picker-title small { color: var(--text-muted); font-size: 0.64rem; }
.catalog-picker-count { padding: 0.28rem 0.5rem; border-radius: 999px; background: var(--bg-elevated); color: var(--text-secondary); font-size: 0.62rem; white-space: nowrap; }
.catalog-picker-chevron { color: var(--text-muted); font-size: 1.1rem; transition: transform 180ms ease-out; }
.catalog-picker-group[open] .catalog-picker-chevron { transform: rotate(180deg); }
.catalog-picker-tools { display: flex; align-items: center; justify-content: flex-end; gap: 0.35rem; padding: 0.45rem 0.7rem; border-top: 1px solid var(--border-line); background: var(--bg-elevated); }
.catalog-picker-tools > span { margin-right: auto; color: var(--text-muted); font-size: 0.6rem; }
.catalog-picker-tools .resource-edit, .catalog-picker-tools .icon-btn { width: 2rem; min-width: 2rem; height: 2rem; min-height: 2rem; }
.catalog-service-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.55rem; padding: 0 0.7rem 0.7rem; background: var(--bg-elevated); }
.catalog-service-family { display: grid; align-content: start; gap: 0; overflow: hidden; border: 1px solid var(--border-line); border-radius: 11px; background: var(--bg-base); }
.catalog-service-option { position: relative; display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 0.7rem; min-height: 76px; padding: 0.72rem; border: 1px solid var(--border-line); border-radius: 10px; background: var(--bg-base); cursor: pointer; transition: border-color 180ms ease-out, background 180ms ease-out, transform 180ms ease-out; }
.catalog-service-family > .catalog-service-option { border: 0; border-radius: 0; }
.catalog-service-option--main { min-height: 82px; }
.catalog-service-children { display: grid; border-top: 1px solid var(--border-line); background: color-mix(in srgb, #8b5cf6 3%, var(--bg-elevated)); }
.catalog-service-option--child { min-height: 58px; padding: 0.55rem 0.7rem 0.55rem 1.15rem; border: 0; border-bottom: 1px solid var(--border-line); border-radius: 0; background: transparent; }
.catalog-service-option--child:last-child { border-bottom: 0; }
.catalog-service-option--child .catalog-service-check { width: 1.2rem; height: 1.2rem; border-radius: 5px; font-size: 0.62rem; }
.catalog-service-option--child .catalog-service-copy strong { font-size: 0.69rem; font-weight: 650; }
.catalog-service-option:hover { border-color: color-mix(in srgb, #8b5cf6 48%, var(--border-line)); transform: translateY(-1px); }
.catalog-service-family .catalog-service-option:hover { background: color-mix(in srgb, #8b5cf6 6%, var(--bg-base)); transform: none; }
.catalog-service-bundle { grid-column: 1 / -1; }
.catalog-price-composition { display: grid; border-top: 1px solid var(--border-line); background: var(--bg-elevated); }
.catalog-price-row { display: flex; align-items: center; justify-content: space-between; gap: 1rem; min-height: 42px; padding: 0.5rem 0.75rem; border-bottom: 1px solid var(--border-line); font-size: 0.66rem; }
.catalog-price-row:last-child { border-bottom: 0; }
.catalog-price-row > span:first-child { display: flex; align-items: center; gap: 0.55rem; min-width: 0; }
.catalog-price-row small { min-width: 2.4rem; color: #a78bfa; font-family: var(--font-mono, monospace); font-size: 0.56rem; }
.catalog-price-row--main { color: var(--text-primary); }
.catalog-price-row--child { min-height: 36px; padding-left: 1.45rem; color: var(--text-muted); }
.catalog-service-option:has(input:focus-visible) { outline: 2px solid #8b5cf6; outline-offset: 2px; }
.catalog-service-option:has(input:checked) { border-color: #8b5cf6; background: color-mix(in srgb, #8b5cf6 9%, var(--bg-base)); }
.catalog-service-option > input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.catalog-service-check { display: grid; place-items: center; width: 1.45rem; height: 1.45rem; border: 1px solid var(--border-input); border-radius: 6px; color: transparent; font-size: 0.72rem; font-weight: 800; transition: background 180ms ease-out, border-color 180ms ease-out, color 180ms ease-out; }
.catalog-service-option input:checked + .catalog-service-check { border-color: #8b5cf6; background: #8b5cf6; color: #fff; }
.catalog-service-copy { display: grid; min-width: 0; gap: 0.12rem; }
.catalog-service-copy small { color: #a78bfa; font-family: var(--font-mono, monospace); font-size: 0.58rem; }
.catalog-service-copy strong { overflow: hidden; font-size: 0.75rem; text-overflow: ellipsis; white-space: nowrap; }
.catalog-service-copy span { color: var(--text-muted); font-size: 0.61rem; }
.catalog-service-price { color: var(--text-primary); font-size: 0.72rem; white-space: nowrap; }
.catalog-selection-bar { position: sticky; z-index: 15; bottom: 0.65rem; display: grid; grid-template-columns: auto minmax(230px, 1fr) auto; align-items: end; gap: 0.8rem; margin-top: 0.8rem; padding: 0.75rem; border: 1px solid color-mix(in srgb, #8b5cf6 45%, var(--border-line)); border-radius: 12px; background: color-mix(in srgb, var(--bg-base) 94%, transparent); box-shadow: 0 12px 35px rgb(0 0 0 / 22%); backdrop-filter: blur(14px); }
.catalog-selection-status { display: grid; min-width: 115px; gap: 0.1rem; }
.catalog-selection-status strong { color: #a78bfa; font-size: 0.72rem; }
.catalog-selection-status > span { font-size: 0.9rem; font-weight: 800; }
.catalog-selection-bar label { display: grid; gap: 0.22rem; }
.catalog-selection-bar label > span { color: var(--text-muted); font-size: 0.62rem; }
.catalog-selection-bar .btn { min-height: 40px; }

@media (max-width: 760px) {
    .catalog-picker-heading { display: grid; }
    .catalog-picker-heading p { text-align: left; }
    .catalog-service-grid { grid-template-columns: 1fr; }
    .catalog-selection-bar { grid-template-columns: 1fr; }
    .catalog-selection-bar .btn { width: 100%; justify-content: center; }
    .catalog-picker-count { display: none; }
}

@media (prefers-reduced-motion: reduce) {
    .catalog-picker-group > summary, .catalog-picker-chevron, .catalog-service-option, .catalog-service-check { transition: none; }
}

/* Aufgaben-Arbeitszentrale */
.task-workspace-hero {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 1.5rem;
    margin-bottom: 0.8rem;
    padding: 1.2rem 1.35rem;
    border: 1px solid color-mix(in srgb, #f97316 28%, var(--border-line));
    border-radius: 14px;
    background: linear-gradient(112deg, color-mix(in srgb, #f97316 13%, var(--bg-base)), var(--bg-base) 62%);
}
.task-workspace-hero h1 { margin: 0 0 0.25rem; font-size: 1.65rem; letter-spacing: -0.035em; }
.task-workspace-hero p { margin: 0; color: var(--text-secondary); font-size: 0.78rem; }
.task-status-rail {
    display: grid;
    grid-template-columns: repeat(5, minmax(120px, 1fr));
    overflow-x: auto;
    margin: 0.8rem 0;
    border: 1px solid var(--border-line);
    border-radius: 12px;
    background: var(--bg-base);
}
.task-status-rail > a {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.8rem;
    min-height: 58px;
    padding: 0.75rem 0.9rem;
    border-right: 1px solid var(--border-line);
    color: var(--text-secondary);
    text-decoration: none;
    transition: background 180ms ease-out, color 180ms ease-out;
}
.task-status-rail > a:last-child { border-right: 0; }
.task-status-rail > a:hover { background: var(--bg-elevated); color: var(--text-primary); }
.task-status-rail > a.is-active { background: color-mix(in srgb, #f97316 11%, transparent); color: #fb923c; }
.task-status-rail > a.task-status-alert.is-active { background: color-mix(in srgb, #ef4444 10%, transparent); color: #f87171; }
.task-status-rail span { display: inline-flex; align-items: center; gap: 0.4rem; font-size: 0.72rem; font-weight: 750; white-space: nowrap; }
.task-status-rail strong { display: grid; place-items: center; min-width: 1.55rem; height: 1.55rem; padding: 0 0.35rem; border-radius: 999px; background: var(--bg-elevated); color: var(--text-primary); font-size: 0.68rem; }
.task-status-rail .ui-icon { width: 0.88rem; height: 0.88rem; }
.task-status-mark { display: inline-block; width: 0.52rem; height: 0.52rem; border-radius: 50%; background: #94a3b8; }
.task-status-mark--open { background: #94a3b8; }
.task-status-mark--progress, .task-status-mark--in_progress { background: #f97316; }
.task-status-mark--done { background: #22c55e; }
.task-filter-bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 0.75rem;
    padding: 0.7rem;
    border: 1px solid var(--border-line);
    border-radius: 11px;
    background: var(--bg-elevated);
}
.task-filter-bar > form { display: grid; grid-template-columns: minmax(240px, 1.5fr) minmax(130px, 0.55fr) minmax(150px, 0.7fr); gap: 0.5rem; width: min(850px, 100%); margin: 0; }
.task-filter-bar > span { color: var(--text-muted); font-size: 0.68rem; white-space: nowrap; }
.task-search-field { display: flex; align-items: center; gap: 0.45rem; min-height: 40px; padding: 0 0.75rem; border: 1px solid var(--border-input); border-radius: var(--radius-input, 8px); background: var(--bg-base); color: var(--text-muted); }
.task-search-field:focus-within { border-color: #f97316; box-shadow: 0 0 0 3px color-mix(in srgb, #f97316 12%, transparent); }
.task-search-field .ui-icon { flex: 0 0 auto; width: 0.95rem; height: 0.95rem; }
.task-search-field input { min-width: 0; width: 100%; border: 0; outline: 0; background: transparent; color: var(--text-primary); font: inherit; font-size: 0.76rem; }
.task-search-field input::placeholder { color: var(--text-secondary); }
.task-work-list { display: grid; border: 1px solid var(--border-line); border-radius: 13px; background: var(--bg-base); }
.task-work-item {
    --task-state: #94a3b8;
    position: relative;
    display: grid;
    grid-template-columns: auto minmax(250px, 1.45fr) minmax(130px, 0.7fr) minmax(120px, 0.65fr) minmax(115px, 0.55fr) auto auto;
    align-items: center;
    gap: 0.8rem;
    min-height: 92px;
    padding: 0.9rem 1rem;
    border-bottom: 1px solid var(--border-line);
    transition: background 180ms ease-out;
}
.task-work-item:last-child { border-bottom: 0; }
.task-work-item--overdue { --task-state: #ef4444; background: color-mix(in srgb, #ef4444 4%, transparent); }
.task-work-item--today { --task-state: #f97316; background: color-mix(in srgb, #f97316 3%, transparent); }
.task-work-item--done { --task-state: #22c55e; }
.task-work-item:hover, .task-work-item:focus-within { background: color-mix(in srgb, var(--task-state) 7%, var(--bg-base)); }
.task-work-state-icon { display: grid; place-items: center; width: 2.35rem; height: 2.35rem; border-radius: 10px; background: color-mix(in srgb, var(--task-state) 14%, transparent); color: var(--task-state); }
.task-work-state-icon .ui-icon { width: 1.02rem; height: 1.02rem; }
.task-work-main { display: grid; gap: 0.28rem; min-width: 0; color: var(--text-primary); text-decoration: none; }
.task-work-title-line { display: flex; align-items: center; flex-wrap: wrap; gap: 0.35rem; min-width: 0; }
.task-work-title-line > strong { overflow: hidden; max-width: 100%; font-size: 0.86rem; text-overflow: ellipsis; white-space: nowrap; }
.task-work-title-line > i { color: #f97316; font-size: 0.85rem; font-style: normal; }
.task-work-title-line .priority-pill { padding: 0.18rem 0.42rem; font-size: 0.57rem; }
.task-work-description { overflow: hidden; color: var(--text-muted); font-size: 0.68rem; text-overflow: ellipsis; white-space: nowrap; }
.task-work-meta { display: flex; align-items: center; flex-wrap: wrap; gap: 0.55rem; color: var(--text-muted); font-size: 0.62rem; }
.task-work-meta > span:not(.tag-icon-list) { display: inline-flex; align-items: center; gap: 0.25rem; }
.task-work-meta .ui-icon { width: 0.72rem; height: 0.72rem; }
.task-work-meta .tag-icon-list { margin: 0; }
.task-work-people { display: grid; gap: 0.28rem; min-width: 0; }
.task-assignee-stack { display: flex; padding-left: 0.35rem; }
.task-assignee-stack i { display: grid; place-items: center; width: 1.65rem; height: 1.65rem; margin-left: -0.35rem; border: 2px solid var(--bg-base); border-radius: 50%; background: color-mix(in srgb, #f97316 16%, var(--bg-elevated)); color: #fb923c; font-size: 0.6rem; font-style: normal; font-weight: 850; }
.task-work-people small { overflow: hidden; color: var(--text-secondary); font-size: 0.64rem; text-overflow: ellipsis; white-space: nowrap; }
.task-work-people small.is-unassigned { color: var(--text-muted); }
.task-work-schedule { display: grid; gap: 0.22rem; }
.task-schedule-badge { display: inline-flex; align-items: center; gap: 0.3rem; width: fit-content; color: var(--text-secondary); font-size: 0.67rem; font-weight: 750; white-space: nowrap; }
.task-schedule-badge .ui-icon { width: 0.78rem; height: 0.78rem; }
.task-schedule-badge--overdue { color: #f87171; }
.task-schedule-badge--today { color: #fb923c; }
.task-schedule-badge--done { color: #4ade80; }
.task-work-schedule small { color: var(--text-muted); font-size: 0.61rem; }
.task-work-status form { margin: 0; }
.task-status-select { min-height: 34px; padding-block: 0.3rem; border-color: color-mix(in srgb, #94a3b8 35%, var(--border-input)); background: color-mix(in srgb, #94a3b8 8%, var(--bg-base)); font-size: 0.67rem; font-weight: 750; }
.task-status-select--in_progress { border-color: color-mix(in srgb, #f97316 35%, var(--border-input)); background: color-mix(in srgb, #f97316 8%, var(--bg-base)); color: #fb923c; }
.task-status-select--done { border-color: color-mix(in srgb, #22c55e 35%, var(--border-input)); background: color-mix(in srgb, #22c55e 8%, var(--bg-base)); color: #4ade80; }
.task-status-static { display: inline-flex; align-items: center; gap: 0.35rem; color: var(--text-secondary); font-size: 0.68rem; }
.task-work-open { display: grid; place-items: center; width: 1.9rem; height: 1.9rem; border-radius: 8px; background: color-mix(in srgb, var(--task-state) 11%, transparent); color: var(--task-state); }
.task-work-open .ui-icon, .task-work-more summary .ui-icon { width: 0.85rem; height: 0.85rem; }
.task-work-more { position: relative; }
.task-work-more summary { display: grid; place-items: center; width: 1.9rem; height: 1.9rem; padding: 0; }
.task-work-more .sales-more-popover { top: calc(100% + 0.35rem); right: 0; bottom: auto; }
.task-empty-state { display: flex; align-items: center; gap: 0.8rem; padding: 2rem; color: var(--text-muted); }
.task-empty-state > .ui-icon { width: 1.7rem; height: 1.7rem; color: #22c55e; }
.task-empty-state > div { display: grid; gap: 0.2rem; }
.task-empty-state strong { color: var(--text-primary); font-size: 0.86rem; }
.task-empty-state span, .task-empty-state a { font-size: 0.7rem; }
.task-empty-state a { margin-left: auto; color: #fb923c; font-weight: 750; }
.task-manual-time {
    margin-top: 1rem;
    padding: 1rem;
    border: 1px solid var(--border-line);
    border-radius: 10px;
    background: color-mix(in srgb, var(--bg-elevated) 48%, var(--bg-base));
}
.task-manual-time__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 0.85rem;
}
.task-manual-time__head > div { display: grid; gap: 0.15rem; }
.task-manual-time__head strong { font-size: 0.82rem; }
.task-manual-time__head span { color: var(--text-muted); font-size: 0.66rem; }
.task-manual-time__duration {
    min-width: 9rem;
    padding: 0.42rem 0.65rem;
    border-radius: 7px;
    background: var(--accent-soft);
    color: var(--accent);
    font-size: 0.7rem;
    font-weight: 800;
    text-align: center;
}
.task-manual-time__duration.is-error { background: color-mix(in srgb, var(--danger) 13%, transparent); color: var(--danger); }
.task-manual-time__range { display: flex; align-items: end; gap: 0.65rem; }
.task-time-point {
    display: grid;
    flex: 1 1 0;
    grid-template-columns: minmax(150px, 1fr) minmax(110px, 0.55fr);
    gap: 0.5rem;
    margin: 0;
    padding: 0;
}
.task-time-point legend {
    grid-column: 1 / -1;
    margin-bottom: 0.35rem;
    color: var(--text-secondary);
    font-size: 0.65rem;
    letter-spacing: 0;
    text-transform: none;
}
.task-time-field span { margin-bottom: 0.25rem; font-size: 0.58rem; letter-spacing: 0.08em; }
.task-time-field .field-input { min-height: 42px; color-scheme: dark; }
:root[data-theme="light"] .task-time-field .field-input { color-scheme: light; }
.task-time-arrow { display: grid; place-items: center; width: 1.75rem; height: 42px; color: var(--text-muted); }
.task-time-arrow .ui-icon { width: 0.9rem; height: 0.9rem; }
.task-manual-time__submit { min-height: 42px; white-space: nowrap; }
.clock-time-point { grid-template-columns: minmax(150px, 1fr) minmax(110px, 0.65fr) minmax(150px, 1fr) minmax(110px, 0.65fr); }
.appointment-time-editor {
    padding: 0.9rem;
    border: 1px solid var(--border-line);
    border-radius: 10px;
    background: color-mix(in srgb, var(--bg-elevated) 48%, var(--bg-base));
}
.appointment-time-editor__fields {
    display: grid;
    grid-template-columns: minmax(180px, 1fr) minmax(110px, 0.55fr) auto minmax(110px, 0.55fr);
    gap: 0.6rem;
    align-items: end;
}
.ticket-deadline-editor__fields {
    display: grid;
    grid-template-columns: minmax(125px, 0.8fr) minmax(150px, 1fr);
    gap: 0.45rem;
    padding: 0.35rem;
    border: 1px solid var(--border-line);
    border-radius: 8px;
    background: color-mix(in srgb, var(--bg-elevated) 48%, var(--bg-base));
}
.due-date-control.ticket-deadline-editor__fields { grid-template-columns: minmax(125px, 0.8fr) minmax(150px, 1fr); }
.ticket-deadline-editor__fields .field-input { min-height: 40px; border-color: transparent; background-color: var(--bg-base); }
.ticket-deadline-editor__fields .field-input:focus { border-color: var(--accent); }
@media (max-width: 900px) {
    .task-manual-time__range { align-items: stretch; flex-direction: column; }
    .task-time-arrow { width: 100%; height: 1rem; transform: rotate(90deg); }
    .task-manual-time__submit { margin-top: 0.25rem; }
    .appointment-time-editor__fields { grid-template-columns: minmax(0, 1fr) minmax(110px, 0.55fr) auto minmax(110px, 0.55fr); }
}
@media (max-width: 520px) {
    .task-manual-time__head { align-items: flex-start; flex-direction: column; }
    .task-manual-time__duration { width: 100%; }
    .task-time-point { grid-template-columns: minmax(0, 1fr) 112px; }
    .appointment-time-editor__fields { grid-template-columns: minmax(0, 1fr) 112px; }
    .appointment-time-editor__fields .task-time-field--date { grid-column: 1 / -1; }
    .appointment-time-editor__fields .task-time-arrow { width: 1rem; transform: none; }
    .ticket-deadline-editor__fields { grid-template-columns: 1fr; }
    .due-date-control.ticket-deadline-editor__fields { grid-template-columns: 1fr; }
    .clock-time-point { grid-template-columns: minmax(0, 1fr) 112px; }
}

/* Rechnungscockpit und offene Posten */
.invoice-cockpit {
    overflow: hidden;
    border: 1px solid var(--border-line);
    border-radius: 14px;
    background: var(--bg-base);
}
.invoice-cockpit-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 1.1rem 1.2rem;
    border-bottom: 1px solid var(--border-line);
}
.invoice-cockpit-head h2 { margin: 0 0 0.2rem; }
.invoice-cockpit-head p { margin: 0; color: var(--text-muted); font-size: 0.78rem; }
.invoice-export-link {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    color: var(--text-secondary);
    font-size: 0.75rem;
    font-weight: 750;
    text-decoration: none;
}
.invoice-export-link:hover { color: #f97316; }
.invoice-export-link .ui-icon { width: 0.9rem; height: 0.9rem; }
.invoice-balance-strip {
    display: grid;
    grid-template-columns: minmax(240px, 1.45fr) repeat(2, minmax(180px, 1fr));
    border-bottom: 1px solid var(--border-line);
    background: color-mix(in srgb, #f97316 3%, var(--bg-elevated));
}
.invoice-balance-strip > div { display: grid; gap: 0.2rem; padding: 1.15rem 1.2rem; border-right: 1px solid var(--border-line); }
.invoice-balance-strip > div:last-child { border-right: 0; }
.invoice-balance-strip span { color: var(--text-muted); font-size: 0.68rem; font-weight: 700; }
.invoice-balance-strip strong { font-size: 1.25rem; letter-spacing: -0.025em; }
.invoice-balance-strip strong.is-alert { color: #ef4444; }
.invoice-balance-strip small { color: var(--text-muted); font-size: 0.68rem; }
.invoice-balance-main { background: color-mix(in srgb, #f97316 9%, transparent); }
.invoice-balance-main strong { color: #fb923c; font-size: 1.5rem; }
.invoice-order-list { display: grid; }
.invoice-order-block { border-bottom: 1px solid var(--border-line); }
.invoice-order-block:last-child { border-bottom: 0; }
.invoice-order-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 0.9rem 1.2rem; background: var(--bg-elevated); }
.invoice-order-head > div { display: flex; align-items: baseline; flex-wrap: wrap; gap: 0.35rem 0.7rem; }
.invoice-order-head span { color: var(--text-muted); font-size: 0.65rem; font-weight: 700; }
.invoice-order-head strong { font-size: 0.82rem; }
.invoice-order-head small { color: var(--text-muted); font-size: 0.7rem; }
.invoice-order-head > a { display: inline-flex; align-items: center; gap: 0.35rem; color: var(--text-secondary); font-size: 0.7rem; font-weight: 700; text-decoration: none; }
.invoice-order-head > a:hover { color: #f97316; }
.invoice-order-head .ui-icon { width: 0.8rem; height: 0.8rem; }
.invoice-ledger { display: grid; }
.invoice-ledger-row {
    --invoice-state: #f97316;
    display: grid;
    grid-template-columns: auto minmax(155px, 1.15fr) auto minmax(135px, 0.8fr) auto auto;
    align-items: center;
    gap: 0.8rem;
    min-height: 72px;
    padding: 0.75rem 1.2rem;
    border-top: 1px solid var(--border-line);
    color: var(--text-primary);
    text-decoration: none;
    transition: background 180ms ease-out, border-color 180ms ease-out;
}
.invoice-ledger-row--overdue { --invoice-state: #ef4444; background: color-mix(in srgb, #ef4444 4%, transparent); }
.invoice-ledger-row--paid { --invoice-state: #22c55e; }
.invoice-ledger-row--due { --invoice-state: #eab308; }
.invoice-ledger-row:hover { background: color-mix(in srgb, var(--invoice-state) 8%, var(--bg-base)); }
.invoice-ledger-icon { display: grid; place-items: center; width: 2.2rem; height: 2.2rem; border-radius: 9px; background: color-mix(in srgb, var(--invoice-state) 14%, transparent); color: var(--invoice-state); }
.invoice-ledger-icon .ui-icon { width: 1rem; height: 1rem; }
.invoice-ledger-copy { display: grid; min-width: 0; gap: 0.18rem; }
.invoice-ledger-copy strong { font-size: 0.82rem; }
.invoice-ledger-copy small, .invoice-ledger-due { color: var(--text-muted); font-size: 0.68rem; }
.invoice-ledger-due { display: grid; gap: 0.12rem; }
.invoice-ledger-due small { color: var(--invoice-state); font-weight: 700; }
.invoice-ledger-total { font-size: 0.85rem; white-space: nowrap; }
.invoice-ledger-open { display: grid; place-items: center; width: 1.8rem; height: 1.8rem; border-radius: 7px; background: color-mix(in srgb, var(--invoice-state) 11%, transparent); color: var(--invoice-state); }
.invoice-ledger-open .ui-icon { width: 0.85rem; height: 0.85rem; }
.invoice-payment-badge { display: inline-flex; justify-content: center; width: fit-content; padding: 0.3rem 0.55rem; border-radius: 999px; background: color-mix(in srgb, #f97316 13%, transparent); color: #fb923c; font-size: 0.65rem; font-weight: 800; white-space: nowrap; }
.invoice-payment-badge--overdue { background: color-mix(in srgb, #ef4444 14%, transparent); color: #f87171; }
.invoice-payment-badge--due { background: color-mix(in srgb, #eab308 15%, transparent); color: #eab308; }
.invoice-payment-badge--paid { background: color-mix(in srgb, #22c55e 14%, transparent); color: #4ade80; }
.invoice-inline-empty, .invoice-empty-state { display: flex; align-items: center; gap: 0.8rem; padding: 1.3rem 1.2rem; color: var(--text-muted); font-size: 0.76rem; }
.invoice-empty-state { padding: 2rem; }
.invoice-empty-state > .ui-icon { width: 1.8rem; height: 1.8rem; color: #f97316; }
.invoice-empty-state > div { display: grid; gap: 0.25rem; }
.invoice-empty-state strong { color: var(--text-primary); font-size: 0.9rem; }
.invoice-create-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 0.55rem; padding: 0.85rem 1.2rem 1rem; border-top: 1px solid var(--border-line); }
.invoice-create-actions form { margin: 0; }
.invoice-billing-done { display: inline-flex; align-items: center; gap: 0.35rem; color: #22c55e; font-size: 0.72rem; font-weight: 700; }
.invoice-billing-done .ui-icon { width: 0.85rem; height: 0.85rem; }

.invoice-detail-hero {
    --invoice-state: #f97316;
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 2rem;
    overflow: hidden;
    margin-bottom: 0.8rem;
    padding: 1.25rem 1.4rem;
    border: 1px solid color-mix(in srgb, var(--invoice-state) 32%, var(--border-line));
    border-radius: 14px;
    background: linear-gradient(115deg, color-mix(in srgb, var(--invoice-state) 14%, var(--bg-base)), var(--bg-base) 62%);
}
.invoice-detail-hero--overdue { --invoice-state: #ef4444; }
.invoice-detail-hero--due { --invoice-state: #eab308; }
.invoice-detail-hero--paid { --invoice-state: #22c55e; }
.invoice-detail-copy { display: grid; gap: 0.85rem; min-width: 0; }
.invoice-detail-title { display: flex; align-items: center; gap: 0.8rem; }
.invoice-detail-document-icon { display: grid; place-items: center; width: 2.8rem; height: 2.8rem; border-radius: 11px; background: color-mix(in srgb, var(--invoice-state) 16%, transparent); color: var(--invoice-state); }
.invoice-detail-document-icon .ui-icon { width: 1.25rem; height: 1.25rem; }
.invoice-detail-title small { color: var(--invoice-state); font-size: 0.7rem; font-weight: 800; }
.invoice-detail-title h1 { margin: 0.1rem 0 0; font-size: 1.55rem; letter-spacing: -0.03em; }
.invoice-detail-context { display: flex; flex-wrap: wrap; gap: 0.45rem 1rem; color: var(--text-muted); font-size: 0.7rem; }
.invoice-detail-amount { display: grid; justify-items: end; gap: 0.35rem; text-align: right; }
.invoice-detail-amount strong { color: var(--invoice-state); font-size: 1.7rem; letter-spacing: -0.035em; }
.invoice-detail-amount small { color: var(--text-muted); font-size: 0.7rem; }
.invoice-progress { display: grid; grid-template-columns: auto minmax(20px, 1fr) auto minmax(20px, 1fr) auto minmax(20px, 1fr) auto; align-items: center; margin-bottom: 0.8rem; padding: 0.75rem 1rem; border: 1px solid var(--border-line); border-radius: 12px; background: var(--bg-base); }
.invoice-progress > div { display: flex; align-items: center; gap: 0.45rem; min-width: 0; color: var(--text-muted); }
.invoice-progress > div > i { display: grid; place-items: center; flex: 0 0 auto; width: 1.8rem; height: 1.8rem; border-radius: 50%; background: var(--bg-elevated); }
.invoice-progress .ui-icon { width: 0.8rem; height: 0.8rem; }
.invoice-progress span { display: grid; min-width: 0; }
.invoice-progress small { font-size: 0.58rem; }
.invoice-progress strong { overflow: hidden; font-size: 0.68rem; text-overflow: ellipsis; white-space: nowrap; }
.invoice-progress > b { height: 1px; margin: 0 0.7rem; background: var(--border-line-strong); }
.invoice-progress .is-complete { color: #22c55e; }
.invoice-progress .is-complete strong, .invoice-progress .is-current strong, .invoice-progress .is-alert strong { color: var(--text-primary); }
.invoice-progress .is-complete > i { background: color-mix(in srgb, #22c55e 14%, transparent); }
.invoice-progress .is-current > i { background: color-mix(in srgb, #f97316 14%, transparent); color: #f97316; }
.invoice-progress .is-alert > i { background: color-mix(in srgb, #ef4444 14%, transparent); color: #ef4444; }
.invoice-settings-notice { display: flex; align-items: center; gap: 0.55rem; margin-bottom: 0.8rem; padding: 0.75rem 0.9rem; border: 1px solid color-mix(in srgb, #eab308 28%, var(--border-line)); border-radius: 10px; background: color-mix(in srgb, #eab308 8%, transparent); color: var(--text-secondary); font-size: 0.72rem; }
.invoice-settings-notice .ui-icon { width: 0.95rem; height: 0.95rem; color: #eab308; }
.invoice-detail-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(275px, 0.32fr); align-items: start; gap: 0.85rem; }
.invoice-detail-main, .invoice-detail-aside { display: grid; gap: 0.85rem; min-width: 0; }
.invoice-detail-aside { position: sticky; top: 1rem; }
.invoice-position-panel, .invoice-documents-panel, .invoice-payment-card, .invoice-send-card { padding: 1rem; }
.invoice-position-table th:not(:first-child), .invoice-position-table td:not(:first-child) { text-align: right; }
.invoice-position-table td:first-child { display: grid; gap: 0.15rem; }
.invoice-position-table td:first-child small { color: var(--text-muted); font-size: 0.65rem; }
.invoice-total-stack { display: grid; justify-content: end; margin-top: 0.8rem; }
.invoice-total-stack > div { display: grid; grid-template-columns: minmax(140px, 1fr) auto; gap: 1.5rem; padding: 0.3rem 0; color: var(--text-secondary); font-size: 0.75rem; }
.invoice-total-stack strong { text-align: right; }
.invoice-total-stack .invoice-total-final { margin-top: 0.35rem; padding-top: 0.65rem; border-top: 1px solid var(--border-line-strong); color: var(--text-primary); font-size: 0.9rem; }
.invoice-total-final strong { color: #fb923c; font-size: 1.1rem; }
.invoice-notes { margin-top: 0.9rem; padding: 0.75rem; border-radius: 9px; background: var(--bg-elevated); }
.invoice-notes strong { font-size: 0.7rem; }
.invoice-notes p { margin: 0.25rem 0 0; color: var(--text-secondary); font-size: 0.72rem; line-height: 1.55; }
.invoice-document-list { display: grid; }
.invoice-document-list > a { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 0.7rem; padding: 0.7rem 0; border-bottom: 1px solid var(--border-line); color: var(--text-primary); text-decoration: none; }
.invoice-document-list > a:last-child { border-bottom: 0; }
.invoice-document-list > a > .ui-icon { width: 1rem; height: 1rem; color: #f97316; }
.invoice-document-list > a > span { display: grid; }
.invoice-document-list small { color: var(--text-muted); font-size: 0.66rem; }
.invoice-payment-card { --invoice-state: #f97316; border-color: color-mix(in srgb, var(--invoice-state) 28%, var(--border-line)); }
.invoice-payment-card--overdue { --invoice-state: #ef4444; }
.invoice-payment-card--due { --invoice-state: #eab308; }
.invoice-payment-card--paid { --invoice-state: #22c55e; }
.invoice-payment-card-head { display: flex; align-items: center; gap: 0.65rem; }
.invoice-payment-card-head > span { display: grid; place-items: center; width: 2.2rem; height: 2.2rem; border-radius: 9px; background: color-mix(in srgb, var(--invoice-state) 14%, transparent); color: var(--invoice-state); }
.invoice-payment-card-head .ui-icon { width: 1rem; height: 1rem; }
.invoice-payment-card-head > div { display: grid; }
.invoice-payment-card-head small { color: var(--text-muted); font-size: 0.65rem; }
.invoice-payment-card-head strong { color: var(--invoice-state); font-size: 0.9rem; }
.invoice-payment-card > p { margin: 0.65rem 0; color: var(--text-secondary); font-size: 0.72rem; }
.invoice-due-form { display: grid; grid-template-columns: 1fr auto; align-items: end; gap: 0.45rem; margin: 0; padding: 0.7rem 0; border-top: 1px solid var(--border-line); }
.invoice-due-form label { display: grid; gap: 0.25rem; }
.invoice-due-form label span, .invoice-send-card small { color: var(--text-muted); font-size: 0.65rem; }
.invoice-paid-form, .invoice-paid-form .btn { width: 100%; margin: 0; }
.invoice-paid-form .btn { justify-content: center; }
.invoice-reminder-card { display: grid; gap: 0.7rem; padding: 1rem; border: 1px solid color-mix(in srgb, #ef4444 35%, var(--border-line)); border-radius: 12px; background: color-mix(in srgb, #ef4444 8%, var(--bg-base)); }
.invoice-reminder-head { display: flex; align-items: center; gap: 0.6rem; color: #ef4444; }
.invoice-reminder-head > .ui-icon { width: 1.05rem; height: 1.05rem; }
.invoice-reminder-head > div { display: grid; }
.invoice-reminder-head span, .invoice-reminder-card > small { color: var(--text-muted); font-size: 0.65rem; }
.invoice-reminder-card form, .invoice-reminder-card .btn { width: 100%; margin: 0; }
.invoice-reminder-card .btn { justify-content: center; background: #dc2626; border-color: #dc2626; }
.invoice-send-card { display: grid; gap: 0.65rem; }
.invoice-send-card > div { display: grid; overflow-wrap: anywhere; }
.invoice-send-card form, .invoice-send-card .btn { width: 100%; margin: 0; }
.invoice-send-card .btn { justify-content: center; }
@media (max-width: 980px) {
    .sales-detail-layout { grid-template-columns: 1fr; }
    .sales-action-panel { position: static; }
    .resource-master-detail.has-editor { grid-template-columns: 1fr; }
    .resource-editor { position: static; }
    .task-work-item { grid-template-columns: auto minmax(0, 1fr) minmax(120px, 0.55fr) minmax(110px, 0.5fr) auto auto; align-items: start; }
    .task-work-state-icon { grid-row: 1 / span 2; }
    .task-work-people { grid-column: 2; grid-row: 2; }
    .task-work-schedule, .task-work-status, .task-work-open, .task-work-more { align-self: center; grid-row: 1 / span 2; }
    .invoice-detail-layout { grid-template-columns: 1fr; }
    .invoice-detail-aside { position: static; grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .invoice-payment-card { grid-row: span 2; }
}
@media (max-width: 700px) {
    .sales-document-open { grid-template-columns: auto minmax(0, 1fr) auto; }
    .sales-document-total { grid-column: 2; }
    .sales-document-arrow { grid-column: 3; grid-row: 1 / span 2; }
    .sales-document-chain { overflow-x: auto; }
    .sales-document-footer { align-items: stretch; flex-direction: column; }
    .sales-document-actions { justify-content: space-between; }
    .sales-detail-hero { align-items: stretch; flex-direction: column; gap: 1rem; padding: 1rem; }
    .sales-detail-total { text-align: left; }
    .sales-order-facts { grid-template-columns: 1fr; }
    .sales-order-facts .wide { grid-column: auto; }
    .sales-invoice-list > a { grid-template-columns: auto minmax(0, 1fr) auto; }
    .sales-invoice-list > a > .ui-icon:last-child { display: none; }
    .object-commerce-chain > header { align-items: flex-start; flex-direction: column; }
    .object-commerce-file { align-items: stretch; flex-direction: column; gap: 0; padding-bottom: 0.55rem; }
    .object-commerce-pdf { align-self: flex-start; margin-left: 2.65rem; }
    .resource-hero { align-items: stretch; flex-direction: column; padding: 1rem; }
    .resource-hero .btn { justify-content: center; }
    .resource-hero .intro-actions { align-items: stretch; flex-direction: column; }
    .resource-hero-count { justify-items: start; }
    .resource-toolbar { align-items: stretch; flex-direction: column; }
    .resource-toolbar > form { align-items: stretch; flex-direction: column; }
    .resource-toolbar > span { align-self: flex-end; }
    .resource-row { grid-template-columns: auto minmax(0, 1fr) auto; gap: 0.55rem; }
    .resource-data { grid-column: 2; }
    .resource-status { grid-column: 2; width: fit-content; }
    .resource-edit { grid-column: 3; grid-row: 1 / span 3; }
    .resource-editor-fields { grid-template-columns: 1fr; }
    .resource-import > form { flex-direction: column; }
    .fleet-modern-surface, .resource-equipment-surface, .resource-catalog-surface, .resource-documents-surface { padding: 0.55rem; }
    .fleet-modern-table, .resource-catalog-table, .resource-documents-table, .fleet-equipment-table { min-width: 700px; }
    .task-workspace-hero { align-items: stretch; flex-direction: column; padding: 1rem; }
    .task-workspace-hero .btn { justify-content: center; }
    .task-status-rail { grid-template-columns: repeat(5, minmax(125px, 1fr)); }
    .task-filter-bar { align-items: stretch; flex-direction: column; }
    .task-filter-bar > form { grid-template-columns: 1fr; }
    .task-filter-bar > span { align-self: flex-end; }
    .task-work-item { grid-template-columns: auto minmax(0, 1fr) auto; align-items: start; gap: 0.55rem; padding: 0.85rem; }
    .task-work-state-icon { grid-column: 1; grid-row: 1; width: 2rem; height: 2rem; }
    .task-work-main { grid-column: 2; grid-row: 1; }
    .task-work-title-line > strong { white-space: normal; }
    .task-work-description { white-space: normal; }
    .task-work-people { grid-column: 2; grid-row: 2; }
    .task-work-schedule { grid-column: 2; grid-row: 3; }
    .task-work-status { grid-column: 2; grid-row: 4; width: min(190px, 100%); }
    .task-work-open { display: none; }
    .task-work-more { align-self: start; grid-column: 3; grid-row: 1; }
    .task-empty-state { align-items: flex-start; flex-wrap: wrap; padding: 1.3rem; }
    .task-empty-state a { width: 100%; margin: 0 0 0 2.5rem; }
    .invoice-cockpit-head, .invoice-order-head { align-items: flex-start; flex-direction: column; }
    .invoice-balance-strip { grid-template-columns: 1fr 1fr; }
    .invoice-balance-main { grid-column: 1 / -1; }
    .invoice-balance-strip > div { border-top: 1px solid var(--border-line); }
    .invoice-balance-main { border-top: 0 !important; }
    .invoice-ledger-row { grid-template-columns: auto minmax(0, 1fr) auto; gap: 0.55rem; }
    .invoice-payment-badge { grid-column: 2; }
    .invoice-ledger-due { grid-column: 2; }
    .invoice-ledger-total { grid-column: 2; }
    .invoice-ledger-open { grid-column: 3; grid-row: 1 / span 4; }
    .invoice-detail-hero { align-items: stretch; flex-direction: column; gap: 1rem; padding: 1rem; }
    .invoice-detail-amount { justify-items: start; text-align: left; }
    .invoice-progress { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0.35rem; overflow-x: auto; }
    .invoice-progress > b { display: none; }
    .invoice-progress > div { align-items: flex-start; flex-direction: column; }
    .invoice-progress strong { white-space: normal; }
    .invoice-detail-aside { grid-template-columns: 1fr; }
    .invoice-position-table th:nth-child(2), .invoice-position-table td:nth-child(2), .invoice-position-table th:nth-child(3), .invoice-position-table td:nth-child(3) { display: none; }
    .invoice-total-stack { justify-content: stretch; }
}
@media (max-width: 1050px) {
    .work-report-grid {
        grid-template-columns: minmax(0, 1fr);
    }
}
@media (prefers-reduced-motion: reduce) {
    .sales-document-card { transition: none; }
    .task-status-rail > a, .task-work-item { transition: none; }
    .invoice-ledger-row { transition: none; }
}
.tag-list {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
    margin-top: 0.45rem;
}
.tag-badge {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    padding: 0.25rem 0.65rem;
    border: 1px solid var(--tag-color, var(--accent));
    border-radius: 999px;
    background: var(--tag-color, var(--accent));
    color: var(--tag-text, #fff);
    font-size: 0.74rem;
    font-weight: 800;
    box-shadow: 0 8px 20px rgba(0, 0, 0, 0.14);
}
.tag-icon-list {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
    margin-top: 0.35rem;
}
.tag-icon {
    display: inline-grid;
    place-items: center;
    width: 22px;
    height: 22px;
    border-radius: 999px;
    background: var(--tag-color, var(--accent));
    color: var(--tag-text, #fff);
    line-height: 1;
}
.tag-icon svg {
    display: block;
}
.tag-picker {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}
.tag-dropdown {
    position: relative;
    max-width: 420px;
}
.selected-tags-preview {
    margin: 0.5rem 0 0.7rem;
}
.tag-dropdown summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 40px;
    padding: 0.65rem 0.85rem;
    border: 1px solid var(--border-line);
    border-radius: 4px;
    background: var(--bg-base);
    color: var(--text-primary);
    cursor: pointer;
    list-style: none;
}
.tag-dropdown summary::-webkit-details-marker {
    display: none;
}
.tag-dropdown summary::after {
    content: "▾";
    color: var(--text-secondary);
}
.tag-dropdown[open] summary {
    border-color: var(--accent);
    box-shadow: 0 0 0 3px var(--accent-soft);
}
.tag-picker-dropdown {
    position: absolute;
    z-index: 20;
    top: calc(100% + 0.35rem);
    left: 0;
    width: min(520px, calc(100vw - 3rem));
    max-height: 280px;
    overflow-y: auto;
    padding: 0.75rem;
    border: 1px solid var(--border-line-strong);
    border-radius: 6px;
    background: var(--bg-surface);
    box-shadow: 0 20px 55px rgba(0, 0, 0, 0.35);
}
.tag-filter-dropdown {
    position: relative;
    width: min(520px, 100%);
    isolation: isolate;
}
.tag-filter-trigger,
.tag-filter-option {
    display: flex;
    align-items: center;
    gap: 0.7rem;
    width: 100%;
    min-height: 42px;
    padding: 0.65rem 0.85rem;
    border: 1px solid var(--border-line);
    border-radius: 4px;
    background: var(--bg-elevated);
    color: var(--text-primary);
    font: inherit;
    text-align: left;
    cursor: pointer;
}
.tag-filter-trigger {
    border-color: var(--border-line-strong);
}
.tag-filter-dropdown.open .tag-filter-trigger {
    border-color: var(--accent);
    box-shadow: 0 0 0 2px var(--accent-soft);
}
.tag-filter-menu {
    position: absolute;
    z-index: 220;
    top: calc(100% + 0.35rem);
    left: 0;
    display: none;
    width: min(520px, calc(100vw - 3rem));
    max-height: 380px;
    overflow-y: auto;
    scrollbar-gutter: stable;
    padding: 0.45rem 0;
    border: 1px solid var(--border-line-strong);
    border-radius: 6px;
    background: var(--bg-elevated);
    box-shadow: 0 24px 70px rgba(0, 0, 0, 0.45);
}
.tag-filter-dropdown.open .tag-filter-menu {
    display: grid;
}
.tag-filter-option {
    min-height: 32px;
    padding: 0.45rem 0.9rem;
    border: 0;
    border-radius: 0;
    background: transparent;
    color: var(--text-secondary);
}
.tag-filter-option:hover,
.tag-filter-option.active {
    background: color-mix(in srgb, var(--tag-color, var(--accent)) 18%, transparent);
    color: var(--text-primary);
}
.tag-filter-icon {
    display: inline-block;
    width: 13px;
    height: 13px;
    flex: 0 0 13px;
    border-radius: 3px;
    background: var(--tag-color, #9ca3af);
    box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.16), 0 0 14px color-mix(in srgb, var(--tag-color, #9ca3af) 36%, transparent);
    clip-path: polygon(20% 0, 100% 0, 100% 80%, 80% 100%, 0 20%);
    color: transparent;
    font-size: 0;
    transform: rotate(45deg);
}
.tag-option {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    padding: 0.45rem 0.65rem;
    border: 1px solid var(--tag-color, var(--accent));
    border-radius: 999px;
    background: var(--tag-color, var(--accent));
    color: var(--tag-text, #fff);
    font-weight: 800;
    cursor: pointer;
}
.tag-option input {
    accent-color: var(--tag-text, #fff);
}
.tag-option span {
    display: inline;
    margin: 0;
    color: inherit;
    font-size: 0.78rem;
    letter-spacing: 0;
    text-transform: none;
}
.tag-option {
    padding: 0.38rem 0.58rem;
    font-weight: 700;
}
.tag-option input[type="checkbox"] {
    display: inline-grid;
    place-content: center;
    width: 17px;
    height: 17px;
    margin: 0;
    border: 1px solid currentColor;
    border-radius: 4px;
    appearance: none;
    background: rgba(0, 0, 0, 0.12);
    color: inherit;
}
.tag-option input[type="checkbox"]::before {
    content: "✓";
    color: currentColor;
    font-size: 0.72rem;
    font-weight: 900;
    line-height: 1;
    opacity: 0;
}
.tag-option input[type="checkbox"]:checked::before {
    opacity: 1;
}
.tag-option input[type="checkbox"]:focus-visible {
    outline: 2px solid currentColor;
    outline-offset: 2px;
}
.tag-search-picker {
    position: relative;
    max-width: 640px;
}
.tag-search-control {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem;
    min-height: 44px;
    padding: 0.3rem 0.45rem;
    border: 1px solid var(--border-line);
    border-radius: 4px;
    background: var(--bg-base);
}
.tag-search-control:focus-within {
    border-color: var(--accent);
    box-shadow: 0 0 0 3px var(--accent-soft);
}
.tag-search-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
}
.tag-search-chip {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    min-height: 26px;
    padding: 0.2rem 0.45rem 0.2rem 0.55rem;
    border: 1px solid var(--tag-color, var(--border-line-strong));
    border-radius: 3px;
    background: var(--tag-color, var(--bg-elevated));
    color: var(--tag-text, var(--text-secondary));
    font-size: 0.82rem;
}
.tag-search-chip button {
    display: inline-grid;
    place-items: center;
    width: 16px;
    height: 16px;
    padding: 0;
    border: 0;
    border-radius: 3px;
    background: transparent;
    color: currentColor;
    cursor: pointer;
}
.tag-search-chip button:hover {
    color: currentColor;
    background: rgba(255,255,255,0.18);
}
.tag-search-input {
    flex: 1 1 180px;
    min-width: 120px;
    border: 0;
    outline: 0;
    background: transparent;
    color: var(--text-primary);
}
.tag-search-list {
    position: absolute;
    z-index: 25;
    top: calc(100% + 0.4rem);
    left: 0;
    width: min(640px, calc(100vw - 3rem));
    max-height: 320px;
    overflow-y: auto;
    border: 1px solid var(--border-line-strong);
    border-radius: 4px;
    background: var(--bg-elevated);
    box-shadow: 0 22px 60px rgba(0, 0, 0, 0.42);
}
.tag-search-picker:not(.is-open) .tag-search-list {
    display: none;
}
.tag-search-option {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    width: 100%;
    min-height: 32px;
    padding: 0.45rem 0.85rem;
    border: 0;
    border-left: 4px solid transparent;
    background: transparent;
    color: var(--text-secondary);
    text-align: left;
    cursor: pointer;
}
.tag-search-option:hover,
.tag-search-option.is-selected {
    border-left-color: var(--accent);
    background: rgba(245, 158, 11, 0.12);
    color: #f59e0b;
    font-weight: 800;
}
.tag-search-icon {
    color: var(--tag-color, var(--accent));
    font-size: 0.95rem;
    line-height: 1;
}
.tag-search-option.is-hidden,
.tag-search-empty.is-hidden {
    display: none;
}
.tag-search-empty {
    padding: 0.8rem 0.9rem;
    color: var(--text-muted);
    font-size: 0.82rem;
}
.tag-search-picker .tag-hidden-input {
    display: none;
}
.tag-preview-field {
    display: flex;
    flex-direction: column;
    justify-content: end;
}
.tag-preview-field .tag-badge {
    display: inline-flex;
    width: max-content;
    margin: 0;
    color: var(--text-primary);
    font-size: 0.74rem;
    letter-spacing: 0;
    text-transform: none;
}

.table-wrap { overflow-x: auto; }
.tenant-table, .contact-table { width: 100%; border-collapse: collapse; font-size: 0.87rem; }
.tenant-table, .contact-table th {
    position: sticky;
    top: 0;
    z-index: 1;
    padding: 0.85rem 1rem;
    background: var(--bg-elevated);
    border-bottom: 1px solid var(--border-line);
    color: var(--text-secondary);
    font-size: 0.67rem;
    letter-spacing: 0.14em;
    text-align: left;
    text-transform: uppercase;
    white-space: nowrap;
}
.tenant-table, .contact-table td {
    padding: 0.9rem 1rem;
    border-bottom: 1px solid var(--border-line);
    white-space: nowrap;
    vertical-align: middle;
}
.tenant-table, .contact-table tr:hover td { background: color-mix(in srgb, var(--accent) 6%, transparent); }
.contacts-table-surface .accent,
.objects-table-surface .accent { color: #7c3aed; }
.contacts-table-surface .tenant-table, .contact-table tr:hover td,
.objects-table-surface .tenant-table, .contact-table tr:hover td { background: rgba(124, 58, 237, 0.06); }
.actions {
    display: flex;
    gap: 0.35rem;
    align-items: center;
    justify-content: flex-end;
}
td.actions {
    display: table-cell;
    text-align: right;
}
td.actions > .btn,
td.actions > form,
td.actions > .split-action {
    display: inline-flex;
    margin-left: 0.35rem;
    vertical-align: middle;
}
.actions form { margin: 0; }
.object-table-actions {
    min-width: 280px;
    flex-wrap: wrap;
}
.consumable-toolbar .search-form {
    justify-content: flex-end;
}
.consumable-toolbar .field-input {
    max-width: 360px;
}
.consumable-import form {
    display: grid;
    grid-template-columns: minmax(180px, 260px) minmax(260px, 1fr) auto;
    align-items: center;
}
.unit-badge {
    border-color: rgba(217, 119, 6, 0.25);
    background: rgba(217, 119, 6, 0.12);
    color: #f59e0b;
}
.warning-badge {
    border-color: rgba(245, 158, 11, 0.34);
    background: rgba(245, 158, 11, 0.12);
    color: #fbbf24;
}
.work-report-pending-row td {
    background: rgba(245, 158, 11, 0.045);
}
.work-report-pending-row:hover td {
    background: rgba(245, 158, 11, 0.08);
}
.work-report-finalized-row td {
    background: rgba(37, 99, 235, 0.045);
}
.work-report-finalized-row:hover td {
    background: rgba(37, 99, 235, 0.08);
}
.work-report-finalized-badge {
    display: inline-flex;
    align-items: center;
    min-height: 28px;
    margin: 0.35rem 0.45rem 0.35rem 0;
    padding: 0.35rem 0.8rem;
    border: 1px solid rgba(37, 99, 235, 0.6);
    border-radius: 5px;
    background: rgba(37, 99, 235, 0.14);
    color: #93c5fd;
    font-weight: 800;
}
.work-report-finalized-notice {
    margin-top: 0.75rem;
    padding: 0.8rem 1rem;
    border: 1px solid rgba(37, 99, 235, 0.45);
    border-radius: 5px;
    background: rgba(37, 99, 235, 0.1);
    color: #bfdbfe;
    font-weight: 700;
}

/* Arbeitsprotokolle: scanbare Vorgangsliste statt klassischer Datentabelle */
.work-report-list-hero {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 1.5rem;
    margin: 1.35rem 0 1.2rem;
}
.work-report-list-hero h1 {
    margin: 0 0 0.35rem;
    font-size: 2.25rem;
    font-weight: 650;
    letter-spacing: -0.035em;
    text-wrap: balance;
}
.work-report-list-hero p {
    max-width: 65ch;
    margin: 0;
    color: var(--text-secondary);
}
.work-report-summary {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 0.55rem;
}
.work-report-summary > span {
    display: inline-flex;
    align-items: baseline;
    gap: 0.35rem;
    min-height: 36px;
    padding: 0.45rem 0.7rem;
    border: 1px solid var(--border-line);
    border-radius: 999px;
    background: var(--bg-surface);
    color: var(--text-secondary);
    font-size: 0.78rem;
}
.work-report-summary strong {
    color: var(--text-primary);
    font-size: 0.9rem;
}
.work-report-summary .is-pending {
    border-color: color-mix(in srgb, #f59e0b 42%, var(--border-line));
    background: color-mix(in srgb, #f59e0b 10%, var(--bg-surface));
    color: #fbbf24;
}
.work-report-list-toolbar {
    overflow: visible;
}
.work-report-list-toolbar form {
    display: flex;
    align-items: center;
    gap: 0.65rem;
    padding: 0.7rem;
}
.work-report-list-search {
    position: relative;
    display: flex;
    flex: 1 1 28rem;
    align-items: center;
    min-width: 14rem;
}
.work-report-list-search .ui-icon {
    position: absolute;
    left: 0.85rem;
    z-index: 1;
    color: var(--text-muted);
    pointer-events: none;
}
.work-report-list-search input {
    width: 100%;
    min-height: 44px;
    padding: 0.65rem 0.9rem 0.65rem 2.55rem;
    border: 1px solid transparent;
    border-radius: 6px;
    outline: none;
    background: var(--bg-base);
    color: var(--text-primary);
    transition: border-color 180ms ease-out, box-shadow 180ms ease-out, background-color 180ms ease-out;
}
.work-report-list-search input::placeholder {
    color: var(--text-muted);
    opacity: 1;
}
.work-report-list-search input:focus {
    border-color: var(--accent);
    background: var(--bg-elevated);
    box-shadow: 0 0 0 3px var(--accent-soft);
}
.work-report-list-surface {
    overflow: visible;
}
.work-report-list-head > div {
    display: flex;
    align-items: baseline;
    gap: 0.65rem;
}
.work-report-list-head h2 {
    font-size: 1.05rem;
}
.work-report-list-head span {
    color: var(--text-muted);
    font-size: 0.75rem;
}
.work-report-overview-list {
    display: grid;
}
.work-report-overview-row {
    display: grid;
    grid-template-columns: minmax(15rem, 1.25fr) minmax(12rem, 1fr) minmax(13rem, 0.9fr) auto;
    gap: 1.25rem;
    align-items: center;
    min-height: 8.25rem;
    padding: 1.05rem 1.2rem;
    border-bottom: 1px solid var(--border-line);
    transition: background-color 180ms ease-out;
}
.work-report-overview-row:last-child {
    border-bottom: 0;
}
.work-report-overview-row:hover {
    background: color-mix(in srgb, var(--accent) 5%, var(--bg-surface));
}
.work-report-overview-row.is-pending {
    background: color-mix(in srgb, #f59e0b 5%, var(--bg-surface));
}
.work-report-overview-row.is-pending:hover {
    background: color-mix(in srgb, #f59e0b 8%, var(--bg-surface));
}
.work-report-overview-primary {
    display: flex;
    align-items: flex-start;
    gap: 0.85rem;
    min-width: 0;
}
.work-report-overview-primary > div {
    display: grid;
    min-width: 0;
    gap: 0.38rem;
}
.work-report-overview-icon {
    display: grid;
    flex: 0 0 auto;
    width: 2.65rem;
    height: 2.65rem;
    place-items: center;
    border-radius: 9px;
    background: var(--accent-soft);
    color: var(--accent);
}
.work-report-overview-row.is-finalized .work-report-overview-icon {
    background: color-mix(in srgb, #3b82f6 14%, transparent);
    color: #93c5fd;
}
.work-report-overview-row.is-pending .work-report-overview-icon {
    background: color-mix(in srgb, #f59e0b 14%, transparent);
    color: #fbbf24;
}
.work-report-overview-title {
    width: fit-content;
    max-width: 100%;
    overflow: hidden;
    color: var(--text-primary);
    font-size: 0.96rem;
    font-weight: 750;
    line-height: 1.35;
    text-overflow: ellipsis;
    white-space: nowrap;
}
a.work-report-overview-title:hover {
    color: var(--accent);
}
a.work-report-overview-title:focus-visible {
    border-radius: 3px;
    outline: 2px solid var(--accent);
    outline-offset: 3px;
}
.work-report-overview-ticket {
    display: flex;
    min-width: 0;
    gap: 0.35rem;
    color: var(--text-muted);
    font-size: 0.72rem;
}
.work-report-overview-ticket span:last-child {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.work-report-overview-state {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.4rem;
}
.work-report-state-badge {
    display: inline-flex;
    align-items: center;
    width: fit-content;
    min-height: 24px;
    padding: 0.25rem 0.5rem;
    border: 1px solid var(--border-line);
    border-radius: 999px;
    color: var(--text-secondary);
    font-size: 0.68rem;
    font-weight: 750;
}
.work-report-state-badge.is-finalized {
    border-color: color-mix(in srgb, #3b82f6 45%, transparent);
    background: color-mix(in srgb, #3b82f6 12%, transparent);
    color: #93c5fd;
}
.work-report-state-badge.is-pending {
    border-color: color-mix(in srgb, #f59e0b 45%, transparent);
    background: color-mix(in srgb, #f59e0b 10%, transparent);
    color: #fbbf24;
}
.work-report-overview-activity {
    min-width: 0;
}
.work-report-overview-activity > span,
.work-report-overview-meta dt {
    color: var(--text-muted);
    font-size: 0.68rem;
    font-weight: 700;
}
.work-report-overview-activity p {
    display: -webkit-box;
    margin: 0.35rem 0 0;
    overflow: hidden;
    color: var(--text-secondary);
    font-size: 0.82rem;
    line-height: 1.5;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
}
.work-report-overview-meta {
    display: grid;
    gap: 0.65rem;
    min-width: 0;
    margin: 0;
}
.work-report-overview-meta > div {
    display: grid;
    grid-template-columns: 5.25rem minmax(0, 1fr);
    gap: 0.55rem;
    align-items: start;
}
.work-report-overview-meta dt {
    display: flex;
    align-items: center;
    gap: 0.35rem;
}
.work-report-overview-meta dt .ui-icon {
    width: 0.85rem;
    height: 0.85rem;
}
.work-report-overview-meta dd {
    min-width: 0;
    margin: 0;
    overflow: hidden;
    color: var(--text-secondary);
    font-size: 0.78rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.work-report-overview-meta dd small {
    display: block;
    margin-top: 0.15rem;
    color: var(--text-muted);
    font-size: 0.7rem;
}
.work-report-overview-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 0.45rem;
}
.work-report-overview-actions form {
    margin: 0;
}
.work-report-overview-actions .btn,
.work-report-overview-actions .split-action,
.work-report-overview-actions .icon-btn {
    min-height: 40px;
}
.work-report-list-empty {
    display: grid;
    justify-items: center;
    gap: 0.65rem;
    padding: 3.5rem 1.25rem;
    text-align: center;
}
.work-report-list-empty-icon {
    display: grid;
    width: 3rem;
    height: 3rem;
    place-items: center;
    border-radius: 10px;
    background: var(--accent-soft);
    color: var(--accent);
}
.work-report-list-empty strong {
    font-size: 1rem;
}
.work-report-list-empty p {
    max-width: 56ch;
    margin: 0;
    color: var(--text-muted);
    font-size: 0.82rem;
}
@media (max-width: 1180px) {
    .work-report-overview-row {
        grid-template-columns: minmax(15rem, 1fr) minmax(13rem, 1fr) auto;
    }
    .work-report-overview-meta {
        grid-column: 1 / 3;
        grid-row: 2;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        padding-left: 3.5rem;
    }
    .work-report-overview-actions {
        grid-column: 3;
        grid-row: 1 / 3;
    }
}
@media (max-width: 780px) {
    .work-report-list-hero {
        align-items: flex-start;
        flex-direction: column;
    }
    .work-report-list-hero h1 {
        font-size: 1.9rem;
    }
    .work-report-summary {
        justify-content: flex-start;
    }
    .work-report-list-toolbar form {
        align-items: stretch;
        flex-direction: column;
    }
    .work-report-list-search {
        flex-basis: auto;
        min-width: 0;
    }
    .work-report-overview-row {
        grid-template-columns: minmax(0, 1fr);
        gap: 1rem;
        min-height: 0;
    }
    .work-report-overview-activity,
    .work-report-overview-meta,
    .work-report-overview-actions {
        grid-column: 1;
        grid-row: auto;
        padding-left: 3.5rem;
    }
    .work-report-overview-meta {
        grid-template-columns: minmax(0, 1fr);
    }
    .work-report-overview-actions {
        justify-content: flex-start;
        flex-wrap: wrap;
    }
}
@media (max-width: 520px) {
    .work-report-overview-row {
        padding: 1rem;
    }
    .work-report-overview-activity,
    .work-report-overview-meta,
    .work-report-overview-actions {
        padding-left: 0;
    }
    .work-report-overview-actions > .btn,
    .work-report-overview-actions > .split-action {
        flex: 1 1 auto;
    }
}
.work-report-detail input:disabled,
.work-report-detail select:disabled,
.work-report-detail textarea:disabled,
.work-report-detail button:disabled {
    cursor: not-allowed;
    opacity: 0.62;
}
.consumable-stat-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem;
}
.work-template-editor {
    max-width: none;
}
.work-template-editor .tenant-form {
    padding: 1rem 1.2rem 1.2rem;
}
.work-template-editor .tabs {
    margin: 1.2rem 0 0;
}
.work-template-section {
    padding: 1rem 1.2rem;
    border-top: 1px solid var(--border-line);
}
.template-row {
    display: grid;
    grid-template-columns: minmax(280px, 1fr) minmax(360px, 0.75fr);
    gap: 1rem;
    align-items: center;
    padding: 1rem 0;
    border-bottom: 1px solid var(--border-line);
}
.template-row p {
    margin: 0.35rem 0 0;
}
.template-head {
    padding-top: 0;
    color: var(--text-primary);
}
.template-options {
    display: flex;
    flex-wrap: wrap;
    gap: 0.8rem;
    justify-content: flex-end;
}
.btn-icon {
    width: 34px;
    min-width: 34px;
    padding: 0;
}
.service-catalog-editor .tenant-form {
    padding: 1rem 1.2rem 1.2rem;
}
.service-catalog-grid {
    grid-template-columns: minmax(280px, 1.1fr) minmax(220px, 0.8fr) auto;
    align-items: end;
}
.service-catalog-check {
    min-height: 42px;
    align-items: center;
}
.service-catalog-items {
    display: grid;
    gap: 0.55rem;
    padding: 1rem 1.2rem;
}
.service-item {
    display: grid;
    grid-template-columns: 24px 58px minmax(0, 1fr) auto;
    gap: 0.65rem;
    align-items: center;
    padding: 0.65rem 0.75rem;
    border: 1px solid var(--border-line);
    border-radius: 4px;
    background: var(--bg-base);
}
.service-item strong {
    color: var(--text-primary);
    font-family: "Cascadia Mono", "Consolas", monospace;
}
.service-level-2 {
    margin-left: 2rem;
}
.drag-handle {
    color: var(--text-muted);
    text-align: center;
}
.service-add-item,
.service-start-check {
    display: grid;
    grid-template-columns: minmax(220px, 320px) minmax(0, 1fr) auto;
    gap: 0.6rem;
    align-items: center;
    padding: 1rem 1.2rem;
    border-top: 1px solid var(--border-line);
}
.service-start-check {
    grid-template-columns: minmax(260px, 1fr) auto;
}
.service-check-list {
    display: grid;
    gap: 0.75rem;
    padding: 1rem 1.2rem;
}
.service-check-item {
    display: grid;
    grid-template-columns: minmax(260px, 1fr) auto;
    gap: 0.75rem 1rem;
    align-items: start;
    padding: 0.9rem;
    border: 1px solid var(--border-line);
    border-radius: 4px;
    background: var(--bg-base);
}
.service-check-item textarea {
    grid-column: 1 / -1;
}
.service-check-item strong {
    display: inline-flex;
    gap: 0.45rem;
    align-items: center;
    margin-right: 0.5rem;
}
.service-check-item.service-check-open {
    background: #15191e;
    border-color: var(--border-line);
}
.service-check-item.service-check-ok {
    background: rgba(34, 197, 94, 0.06);
    border-color: rgba(34, 197, 94, 0.5);
    box-shadow: inset 0 1px 0 rgba(34, 197, 94, 0.12);
}
.service-check-item.service-check-not-ok {
    background: rgba(239, 68, 68, 0.07);
    border-color: rgba(239, 68, 68, 0.55);
    box-shadow: inset 0 1px 0 rgba(239, 68, 68, 0.12);
}
.service-check-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    justify-content: flex-end;
}
.check-pill {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    min-height: 34px;
    padding: 0.4rem 0.65rem;
    border: 1px solid var(--border-line);
    border-radius: 4px;
    background: var(--bg-surface);
    cursor: pointer;
}
.check-pill.ok {
    color: #86efac;
    border-color: rgba(34, 197, 94, 0.45);
}
.check-pill.not-ok {
    color: #fca5a5;
    border-color: rgba(239, 68, 68, 0.45);
}
.work-report-checklist {
    display: grid;
    gap: 0.7rem;
    padding: 0.85rem;
    border: 1px solid var(--border-line);
    border-radius: 4px;
    background: rgba(15, 18, 22, 0.55);
}
.work-report-checklist-head {
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem 0.8rem;
    align-items: baseline;
    justify-content: space-between;
}
.work-report-create-assets {
    display: grid;
    gap: 0.9rem;
    padding: 1rem;
    border: 1px solid var(--border-line);
    border-radius: 4px;
    background: rgba(15, 18, 22, 0.55);
}
.work-report-company-tag-picker {
    display: grid;
    grid-template-columns: minmax(240px, 1fr) minmax(220px, 0.8fr);
    gap: 0.8rem;
    padding: 0.85rem;
    border: 1px solid var(--border-line);
    border-radius: 4px;
    background: rgba(15, 18, 22, 0.45);
}
.empty { padding: 3rem; text-align: center; color: var(--text-secondary); }
.search-hit { background: var(--accent-soft); color: var(--accent); padding: 0 2px; border-radius: 2px; }

.compact-empty { padding: 1.6rem; }

.tabs {
    display: flex;
    gap: 0.5rem;
    margin: -0.35rem 0 1rem;
    border-bottom: 1px solid var(--border-line);
}
.tab {
    padding: 0.75rem 1rem;
    border-bottom: 2px solid transparent;
    color: var(--text-secondary);
    font-size: 0.88rem;
}
button.tab {
    border: 0;
    border-bottom: 2px solid transparent;
    border-radius: 0;
    background: transparent;
    font: inherit;
    cursor: pointer;
}
button.tab:hover {
    color: var(--text-primary);
}
.tab.active {
    border-bottom-color: var(--accent);
    color: var(--text-primary);
}
.tab.disabled {
    cursor: not-allowed;
    opacity: 0.55;
}
.company-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 380px;
    gap: 1rem;
    align-items: start;
}
.company-side {
    display: grid;
    gap: 1rem;
}
.notice {
    margin-bottom: 1.2rem;
    padding: 0.85rem 1rem;
    border: 1px solid var(--border-line);
    border-radius: 4px;
    background: rgba(59,130,246,0.08);
    color: var(--text-secondary);
    font-size: 0.86rem;
}
.info-list {
    margin: 0;
    padding: 1.2rem;
}
.info-list div {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
    padding: 0.75rem 0;
    border-bottom: 1px solid var(--border-line);
}
.info-list div:last-child { border-bottom: 0; }
.info-list dt { color: var(--text-secondary); font-size: 0.82rem; }
.info-list dd {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    margin: 0;
    font-size: 0.82rem;
}
.logo-panel {
    display: grid;
    place-items: center;
    min-height: 240px;
    padding: 1.2rem;
    background: var(--bg-base);
}
.logo-panel img {
    max-width: 100%;
    max-height: 210px;
    object-fit: contain;
}
.logo-placeholder {
    color: var(--text-muted);
    text-align: center;
}
.logo-delete-form {
    padding: 1rem 1.2rem 1.2rem;
    border-top: 1px solid var(--border-line);
}
.logo-delete-form .btn { width: 100%; }

.ticket-list {
    display: grid;
}
.ticket-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 1rem 1.2rem;
    border-bottom: 1px solid var(--border-line);
}
.ticket-row:hover {
    background: color-mix(in srgb, var(--accent) 8%, transparent);
}
.ticket-row-title {
    margin-bottom: 0.25rem;
    font-size: 1rem;
    font-weight: 700;
}
.ticket-row-meta {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    color: var(--text-secondary);
}
.ticket-create-card {
    max-width: 1100px;
    margin: 0 auto 1.2rem;
}
.ticket-checks {
    margin: 0;
    padding: 0.2rem 0 0;
}
.ticket-checks legend {
    margin-bottom: 0.75rem;
}
.ticket-check-inline {
    align-self: end;
    min-height: 44px;
}
.due-date-control {
    display: grid;
    grid-template-columns: 86px minmax(0, 1fr);
    gap: 0.45rem;
}
.due-date-control-compact {
    width: min(320px, 100%);
}
.due-mode-select {
    min-width: 0;
}
.recurrence-control {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}
.recurrence-label {
    color: var(--text-secondary);
    white-space: nowrap;
}
.recurrence-interval-input {
    max-width: 80px;
}
.inline-fields-form {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: 0;
}
.inline-fields-form input[type="number"] {
    max-width: 110px;
}
.rich-editor {
    overflow: hidden;
    border: 1px solid var(--border-line);
    border-radius: 6px;
    background: var(--bg-base);
}
.rich-toolbar {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
    padding: 0.55rem;
    border-bottom: 1px solid var(--border-line);
    background: var(--bg-elevated);
}
.rich-toolbar button {
    min-height: 30px;
    padding: 0.3rem 0.55rem;
    border: 1px solid var(--border-line);
    border-radius: 4px;
    background: var(--bg-base);
    color: var(--text-primary);
    cursor: pointer;
    font-weight: 700;
}
.rich-toolbar button:hover {
    border-color: var(--border-line-strong);
    background: var(--bg-surface);
}
.rich-editable {
    min-height: 220px;
    padding: 0.8rem;
    color: var(--text-primary);
    outline: none;
}
.rich-editable:empty::before {
    content: "Beschreibung eingeben...";
    color: var(--text-muted);
}
.rich-hidden {
    display: none;
}
.ticket-detail-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 420px;
    gap: 1rem;
    align-items: start;
}
.ticket-main-panel {
    padding: 1.2rem;
}
.ticket-status-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 1rem;
}
.ticket-title-input {
    margin-bottom: 1rem;
    font-size: 1.35rem;
    font-weight: 700;
}
.ticket-flags {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.45rem 1rem;
    margin: 1rem 0;
}
.ticket-meta-line {
    margin: 1rem 0;
    padding-top: 1rem;
    border-top: 1px solid var(--border-line);
    color: var(--text-secondary);
    font-size: 0.82rem;
}
.ticket-description {
    display: block;
}
.ticket-side {
    display: grid;
    gap: 1rem;
}
.ticket-side-card {
    margin-bottom: 0;
}
.ticket-side-body {
    display: grid;
    gap: 0.85rem;
    padding: 1.2rem;
}
.ticket-side-line {
    display: flex;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.8rem 0;
    border-top: 1px solid var(--border-line);
    border-bottom: 1px solid var(--border-line);
    color: var(--text-secondary);
    font-size: 0.85rem;
}
.ticket-task-linker {
    display: grid;
    gap: 0.85rem;
}
.ticket-task-linker summary {
    list-style: none;
    cursor: pointer;
}
.ticket-task-linker summary::-webkit-details-marker {
    display: none;
}
.ticket-task-linker > .ticket-side-body {
    padding: 0.25rem 0 0;
}
.ticket-side-line form {
    margin-left: auto;
}
.ticket-contact-box {
    display: grid;
    gap: 0.4rem;
    padding: 1.2rem;
    color: var(--text-secondary);
}
.ticket-contact-box strong {
    color: var(--text-primary);
}
.ticket-contact-edit {
    padding: 0 1.2rem 1rem;
}
.ticket-contact-edit summary {
    color: var(--accent);
    font-size: 0.82rem;
    font-weight: 600;
    cursor: pointer;
    list-style: none;
}
.ticket-contact-edit summary::-webkit-details-marker {
    display: none;
}
.ticket-contact-edit[open] summary {
    margin-bottom: 0.6rem;
}
.contact-more-details summary {
    color: var(--accent);
    font-size: 0.78rem;
    font-weight: 600;
    cursor: pointer;
    list-style: none;
    margin-top: 0.2rem;
}
.contact-more-details summary::-webkit-details-marker {
    display: none;
}
.contact-more-lines {
    margin-top: 0.35rem;
    color: var(--text-secondary);
    font-size: 0.8rem;
    line-height: 1.5;
}
.ticket-table th,
.ticket-table td {
    vertical-align: middle;
}
.ticket-table-row {
    cursor: pointer;
}
.ticket-icon-box {
    display: grid;
    place-items: center;
    width: 64px;
    height: 64px;
    overflow: hidden;
    border-radius: 4px;
    background: var(--bg-elevated);
    color: var(--text-secondary);
    font-size: 1.4rem;
}
.ticket-icon-box .media-preview-thumb,
.ticket-icon-box .media-preview-icon {
    width: 100%;
    height: 100%;
    border-radius: inherit;
}
.priority-pill {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 58px;
    padding: 0.35rem 0.6rem;
    border-radius: 999px;
    color: #fff;
    font-size: 0.78rem;
    font-weight: 700;
}
.priority-low,
.priority-normal {
    background: #16a34a;
}
.priority-medium {
    background: #0ea5e9;
}
.priority-high {
    background: var(--accent);
    color: var(--accent-on);
}
.priority-urgent {
    background: #dc2626;
}
.choice-picker {
    position: relative;
    min-width: 150px;
}
.choice-trigger,
.choice-option {
    display: flex;
    align-items: center;
    gap: 0.55rem;
    width: 100%;
    min-height: 42px;
    padding: 0.62rem 0.85rem;
    border: 1px solid var(--border-line);
    border-radius: 5px;
    background: var(--bg-base);
    color: var(--text-primary);
    font: inherit;
    text-align: left;
    cursor: pointer;
}
.choice-trigger {
    justify-content: flex-start;
}
.choice-caret {
    margin-left: auto;
    color: var(--text-secondary);
}
.choice-menu {
    position: absolute;
    z-index: 35;
    top: calc(100% + 0.35rem);
    left: 0;
    display: none;
    min-width: 240px;
    overflow: hidden;
    border: 1px solid var(--border-line-strong);
    border-radius: 7px;
    background: var(--bg-surface);
    box-shadow: 0 22px 60px rgba(0, 0, 0, 0.4);
}
.choice-picker.open .choice-menu {
    display: grid;
}
.choice-option {
    border: 0;
    border-radius: 0;
    background: transparent;
}
.choice-option:hover,
.choice-option.active {
    background: rgba(217, 119, 6, 0.2);
}
.choice-icon {
    display: inline-grid;
    place-items: center;
    width: 15px;
    height: 15px;
    flex: 0 0 15px;
    border-radius: 999px;
}
.choice-icon::after {
    content: "";
    width: 5px;
    height: 5px;
    border-radius: inherit;
    background: #fff;
    opacity: 0.8;
}
.status-open { background: #ef4444; }
.status-in_progress { background: #f59e0b; }
.status-paused { background: #0ea5e9; }
.status-feedback { background: #d946ef; }
.status-done { background: #22c55e; }
.status-closed { background: #9ca3af; }
.status-all { background: #c7c7c7; }
.priority-normal { background: #22c55e; }
.priority-medium { background: #0ea5e9; }
.priority-high { background: #fb923c; }
.priority-urgent { background: #ef4444; }
.ticket-status-inline {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    margin-bottom: 0.25rem;
    color: var(--text-primary);
    font-size: 0.85rem;
    font-weight: 700;
}
.ticket-status-dot {
    width: 10px;
    height: 10px;
    border-radius: 999px;
    background: #ef4444;
}
.status-open { background: #ef4444; }
.status-in_progress { background: #f59e0b; }
.status-paused { background: #0ea5e9; }
.status-feedback { background: #d946ef; }
.status-done { background: #22c55e; }
.status-closed { background: #9ca3af; }
.avatar-dot {
    display: grid;
    place-items: center;
    width: 26px;
    height: 26px;
    border-radius: 999px;
    background: linear-gradient(135deg, #d946ef, #06b6d4);
    color: #fff;
    font-size: 0.78rem;
    font-weight: 800;
}
.media-preview-empty {
    color: var(--text-muted);
}
.ticket-workstream-head > div {
    min-width: 0;
}
.ticket-workstream-head p {
    margin: 0.25rem 0 0;
}
.ticket-workload-bar {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem 1.5rem;
    padding: 0.8rem 1.2rem;
    border-bottom: 1px solid var(--border-line);
    background: color-mix(in srgb, var(--bg-elevated) 48%, transparent);
    color: var(--text-secondary);
    font-size: 0.78rem;
}
.ticket-workload-bar span,
.ticket-workload-bar a {
    display: inline-flex;
    align-items: baseline;
    gap: 0.35rem;
}
.ticket-workload-bar strong {
    color: var(--text-primary);
    font-family: "Cascadia Mono", "Consolas", monospace;
    font-size: 0.95rem;
}
.ticket-workload-bar a {
    color: #fb923c;
}
.ticket-workload-urgent strong {
    color: #f87171;
}
.ticket-stream {
    display: grid;
}
.ticket-stream-item {
    display: grid;
    grid-template-columns: 74px minmax(0, 1fr) 38px;
    align-items: center;
    gap: 1rem;
    min-width: 0;
    padding: 1rem 1.2rem;
    border-bottom: 1px solid var(--border-line);
    background: var(--bg-surface);
    color: var(--text-primary);
    transition: background-color 170ms ease, transform 170ms cubic-bezier(0.22, 1, 0.36, 1);
}
.ticket-stream-item:last-child {
    border-bottom: 0;
}
.ticket-stream-item:hover,
.ticket-stream-item:focus-visible {
    position: relative;
    background: color-mix(in srgb, var(--accent) 9%, var(--bg-surface));
    color: var(--text-primary);
    transform: translateX(2px);
}
.ticket-stream-item:focus-visible {
    outline: 3px solid var(--accent);
    outline-offset: -3px;
}
.ticket-stream-item.is-overdue {
    background: color-mix(in srgb, #f97316 10%, var(--bg-surface));
}
.ticket-stream-item.is-urgent {
    min-height: 132px;
    background: color-mix(in srgb, #dc2626 12%, var(--bg-surface));
}
.ticket-stream-item.is-completed {
    background: color-mix(in srgb, #22c55e 4%, var(--bg-surface));
    opacity: 0.72;
}
.ticket-stream-preview {
    display: grid;
    width: 74px;
    height: 74px;
    overflow: hidden;
    place-items: center;
    border: 1px solid var(--border-line);
    border-radius: 12px;
    background: var(--bg-elevated);
    color: var(--text-muted);
}
.ticket-stream-preview .media-preview-thumb,
.ticket-stream-preview .media-preview-icon {
    width: 100%;
    height: 100%;
    border-radius: inherit;
    object-fit: cover;
}
.ticket-stream-status-preview .ticket-status-dot {
    width: 18px;
    height: 18px;
    box-shadow: 0 0 0 7px color-mix(in srgb, currentColor 8%, transparent);
}
.ticket-stream--compact .ticket-stream-item {
    min-height: 104px;
}
.ticket-stream-content {
    display: grid;
    min-width: 0;
    gap: 0.28rem;
}
.ticket-stream-kicker {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.45rem 0.8rem;
}
.ticket-stream-number,
.ticket-detail-number {
    color: var(--accent);
    font-family: "Cascadia Mono", "Consolas", monospace;
    font-size: 0.76rem;
    font-weight: 750;
}
.ticket-stream-kicker .ticket-status-inline {
    margin: 0;
    font-size: 0.75rem;
}
.ticket-stream-title {
    overflow: hidden;
    font-size: 1rem;
    line-height: 1.3;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.ticket-stream-target {
    overflow: hidden;
    color: var(--text-secondary);
    font-size: 0.8rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.ticket-stream-meta {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.45rem 0.8rem;
    margin-top: 0.45rem;
    color: var(--text-secondary);
    font-size: 0.76rem;
}
.ticket-stream-meta .priority-pill {
    min-width: 0;
    padding: 0.18rem 0.5rem;
    font-size: 0.68rem;
}
.ticket-stream-owner {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
}
.ticket-stream-owner .avatar-dot {
    width: 22px;
    height: 22px;
    font-size: 0.68rem;
}
.ticket-stream-tags {
    display: inline-flex;
    align-items: center;
}
.ticket-stream-open {
    display: grid;
    width: 36px;
    height: 36px;
    place-items: center;
    border-radius: 50%;
    background: var(--bg-elevated);
    color: var(--text-secondary);
}
.ticket-stream-open .ui-icon {
    width: 17px;
    height: 17px;
}
.ticket-stream-item:hover .ticket-stream-open {
    background: var(--accent);
    color: var(--accent-on);
}
.ticket-detail-intro-modern h1 {
    margin-top: 0.35rem;
    text-wrap: balance;
}
.ticket-detail-intro-modern p {
    margin-top: 0.4rem;
}

@media (max-width: 760px) {
    .ticket-workload-bar { gap: 0.45rem 1rem; padding: 0.75rem; }
    .ticket-stream-item { grid-template-columns: 58px minmax(0, 1fr); gap: 0.75rem; padding: 0.85rem 0.75rem; }
    .ticket-stream-preview { width: 58px; height: 58px; align-self: start; }
    .ticket-stream-open { display: none; }
    .ticket-stream-title,
    .ticket-stream-target { white-space: normal; }
    .ticket-stream-meta { grid-column: 1 / -1; }
}
@media (prefers-reduced-motion: reduce) {
    .ticket-stream-item { transition: none; }
    .ticket-stream-item:hover,
    .ticket-stream-item:focus-visible { transform: none; }
}
.media-preview-thumb,
.media-preview-icon {
    display: grid;
    place-items: center;
    width: 72px;
    height: 54px;
    border-radius: 6px;
    background: var(--bg-elevated);
    color: var(--text-primary);
    object-fit: cover;
}
.media-preview-icon {
    font-weight: 900;
}
.media-preview-video {
    background: rgba(14, 165, 233, 0.18);
    color: #38bdf8;
}
.media-preview-document {
    background: color-mix(in srgb, var(--accent) 18%, transparent);
    color: #c084fc;
}
.ticket-tabs-panel {
    margin-top: 1rem;
}
.ticket-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    padding: 1rem 1.2rem 0;
}
.ticket-tab {
    padding: 0.55rem 0.8rem;
    border: 1px solid var(--border-line);
    border-radius: 999px;
    background: var(--bg-base);
    color: var(--text-secondary);
    font-weight: 700;
}
.ticket-tab:hover {
    color: var(--text-primary);
    border-color: var(--accent);
}
.ticket-tab.active {
    border-color: var(--accent);
    background: var(--accent-soft);
    color: var(--text-primary);
}
.ticket-tab-panel {
    display: none;
}
.ticket-tab-panel.active {
    display: block;
}
.ticket-upload-form {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    align-items: center;
    padding: 1.2rem;
    border-bottom: 1px solid var(--border-line);
}
.ticket-upload-form .field-input {
    max-width: 620px;
}
.ticket-media-grid,
.comment-list,
.share-list {
    display: grid;
    gap: 0.8rem;
    padding: 1.2rem;
}
.ticket-media-grid {
    grid-template-columns: repeat(auto-fill, minmax(210px, 1fr));
}
.ticket-media-card,
.comment-card,
.share-card {
    padding: 0.85rem;
    border: 1px solid var(--border-line);
    border-radius: 7px;
    background: var(--bg-base);
}
.ticket-media-card {
    display: grid;
    gap: 0.65rem;
}
.ticket-media-card a {
    display: grid;
    gap: 0.45rem;
    color: var(--text-primary);
}
.ticket-media-card span,
.share-card code,
.share-link {
    color: var(--text-secondary);
    font-size: 0.78rem;
}
.share-link {
    display: block;
    margin-top: 0.35rem;
    overflow-wrap: anywhere;
    font-family: "Cascadia Mono", "Consolas", monospace;
}
.btn-copy-link {
    margin-top: 0.65rem;
}
.comment-card,
.share-card {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
}
.comment-card p {
    margin: 0.55rem 0 0;
    color: var(--text-secondary);
}
.manager-chat {
    display: grid;
    grid-template-rows: auto minmax(360px, 1fr);
}
.chat-compose {
    display: grid;
    gap: 0.8rem;
    padding: 1.1rem 1.2rem;
    border-bottom: 1px solid var(--border-line);
    background: rgba(15, 18, 22, 0.35);
}
.chat-compose-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    align-items: center;
    justify-content: space-between;
}
.chat-file-picker {
    display: inline-flex;
    flex-wrap: wrap;
    gap: 0.65rem;
    align-items: center;
    color: var(--text-secondary);
}
.chat-file-picker input {
    max-width: 460px;
}
.chat-thread {
    display: grid;
    align-content: start;
    gap: 0.9rem;
    max-height: calc(100vh - 330px);
    min-height: 360px;
    overflow: auto;
    padding: 1.2rem;
}
.chat-message {
    display: flex;
}
.chat-message.own {
    justify-content: flex-end;
}
.chat-bubble {
    width: min(760px, 88%);
    padding: 0.9rem;
    border: 1px solid var(--border-line);
    border-radius: 7px;
    background: var(--bg-base);
}
.chat-message.own .chat-bubble {
    border-color: rgba(217, 119, 6, 0.38);
    background: rgba(217, 119, 6, 0.08);
}
.chat-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem 0.75rem;
    align-items: baseline;
    justify-content: space-between;
    margin-bottom: 0.45rem;
}
.chat-meta span {
    color: var(--text-muted);
    font-size: 0.78rem;
}
.chat-bubble p {
    margin: 0.45rem 0 0;
    color: var(--text-primary);
    white-space: pre-wrap;
}
.chat-attachments {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 0.65rem;
    margin-top: 0.75rem;
}
.chat-attachment {
    display: grid;
    gap: 0.55rem;
    padding: 0.65rem;
    border: 1px solid var(--border-line);
    border-radius: 6px;
    background: rgba(15, 18, 22, 0.62);
}
.chat-attachment a {
    display: grid;
    grid-template-columns: 54px minmax(0, 1fr);
    gap: 0.65rem;
    align-items: center;
    color: var(--text-primary);
}
.chat-attachment strong,
.chat-attachment small {
    display: block;
    overflow-wrap: anywhere;
}
.chat-attachment small {
    margin-top: 0.2rem;
    color: var(--text-muted);
}
.chat-attachment-thumb,
.chat-attachment-icon {
    width: 54px;
    height: 54px;
    border-radius: 5px;
    border: 1px solid var(--border-line);
    background: var(--bg-elevated);
}
.chat-attachment-thumb {
    object-fit: cover;
}
.chat-attachment-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--accent);
    font-size: 1.2rem;
}
.chat-attachment-actions,
.chat-delete-message {
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem;
    justify-content: flex-end;
}
.chat-delete-message {
    margin-top: 0.65rem;
}
.project-comms-bar {
    display: none;
    grid-template-columns: 1fr 1fr;
    gap: 0.5rem;
    margin-bottom: 0.75rem;
}
.project-comms-btn {
    position: relative;
}
.btn-badge,
.tab-badge,
.inline-badge,
.mobile-project-chat-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.1rem;
    height: 1.1rem;
    padding: 0 0.3rem;
    border-radius: 999px;
    background: var(--accent);
    color: var(--accent-on);
    font-size: 0.62rem;
    font-weight: 800;
    line-height: 1;
}
.btn-badge {
    margin-left: 0.35rem;
    vertical-align: middle;
}
.tab.has-badge {
    position: relative;
    padding-right: 1.6rem;
}
.tab-badge {
    position: absolute;
    top: 0.2rem;
    right: 0.35rem;
}
.inline-badge {
    margin-left: 0.4rem;
    vertical-align: middle;
}
.mobile-project-card-top {
    display: flex;
    align-items: center;
    gap: 0.45rem;
}
.mobile-project-chat-badge {
    margin-left: auto;
}
.page-head.compact-head h2 {
    margin: 0;
    font-size: 1.25rem;
}
.shared-ticket {
    width: min(980px, calc(100% - 2rem));
    margin: 2rem auto;
}
.shared-description {
    margin-top: 1rem;
    color: var(--text-primary);
}
.work-report-modal {
    max-width: 1080px;
    margin: 0 auto 1.2rem;
}
.form-hint-danger {
    margin: 1.2rem;
    color: #f87171;
    font-size: 0.86rem;
}
.internal-note {
    background: rgba(202, 138, 4, 0.16);
}
.work-report-detail {
    padding-bottom: 1rem;
}
.work-report-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 360px;
    gap: 1.2rem;
    align-items: start;
}
.time-entries {
    display: grid;
    gap: 0.8rem;
    grid-column: 1 / -1;
    padding: 1rem;
    border: 1px solid var(--border-line);
    border-radius: 7px;
    background: var(--bg-base);
}
.time-entries-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
}
.time-entries-title {
    font-weight: 600;
}
.time-entries-hint {
    margin: 0;
    font-size: 0.86rem;
}
.time-entries-list {
    display: grid;
    gap: 0.8rem;
}
.time-entry-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr) auto auto;
    gap: 0.8rem;
    align-items: end;
    padding: 0.8rem;
    border: 1px solid var(--border-line);
    border-radius: 7px;
    background: var(--bg-surface);
}
.time-entry-row label {
    margin: 0;
}
.time-entry-row [data-time-entry-remove] {
    align-self: end;
    margin-bottom: 0.15rem;
}
.time-entry-point { min-width: 0; }
.time-entry-duration {
    align-self: end;
    min-width: 4.5rem;
    height: 42px;
    padding: 0 0.55rem;
    border-radius: 7px;
    background: var(--accent-soft);
    color: var(--accent);
    font-size: 0.68rem;
    font-weight: 800;
    line-height: 42px;
    text-align: center;
    white-space: nowrap;
}
.time-entry-duration.is-error { background: color-mix(in srgb, var(--danger) 13%, transparent); color: var(--danger); }
@media (max-width: 760px) {
    .time-entry-row {
        grid-template-columns: 1fr;
    }
    .time-entry-row > .task-time-arrow { width: 100%; height: 1rem; transform: rotate(90deg); }
    .time-entry-duration { width: 100%; }
}
.repeatable-entries {
    display: grid;
    gap: 0.8rem;
    grid-column: 1 / -1;
    padding: 1rem;
    border: 1px solid var(--border-line);
    border-radius: 7px;
    background: var(--bg-base);
}
.repeatable-entries-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
}
.repeatable-entries-title {
    font-weight: 600;
}
.repeatable-entries-list {
    display: grid;
    gap: 0.8rem;
}
.repeatable-entry-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto;
    gap: 0.8rem;
    align-items: end;
    padding: 0.8rem;
    border: 1px solid var(--border-line);
    border-radius: 7px;
    background: var(--bg-surface);
}
.repeatable-entry-row label {
    margin: 0;
}
.repeatable-entry-row [data-phone-entry-remove],
.repeatable-entry-row [data-email-entry-remove] {
    align-self: end;
    margin-bottom: 0.15rem;
}
@media (max-width: 760px) {
    .repeatable-entry-row {
        grid-template-columns: 1fr;
    }
}
.work-report-ticket-link {
    display: grid;
    gap: 1rem;
    padding: 1rem;
    border: 1px solid var(--border-line);
    border-radius: 7px;
    background: var(--bg-base);
}
.work-report-ticket-link h3 {
    margin: 0;
}
.linked-ticket-card {
    display: flex;
    gap: 0.75rem;
    align-items: center;
    padding: 0.8rem;
    border: 1px solid var(--border-line);
    border-radius: 999px;
    background: var(--bg-elevated);
}
.linked-ticket-card div {
    display: grid;
    min-width: 0;
}
.linked-ticket-card span:last-child {
    overflow: hidden;
    color: var(--text-secondary);
    font-size: 0.78rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.hidden { display: none !important; }
.danger-text { color: #ef4444; }

/* Kassenbuch */
.cashbook-intro { align-items: end; }
.cashbook-balance {
    display: grid;
    min-width: 280px;
    gap: 0.2rem;
    padding: 1rem 1.2rem;
    border: 1px solid var(--border-line-strong);
    border-radius: 8px;
    background: var(--bg-surface);
    text-align: right;
}
.cashbook-balance span,
.cashbook-balance small { color: var(--text-secondary); font-size: 0.76rem; }
.cashbook-balance strong { font: 800 1.7rem/1.15 "Cascadia Mono", Consolas, monospace; }
.cashbook-due-banner {
    display: flex;
    align-items: center;
    gap: 0.9rem;
    margin-bottom: 1rem;
    padding: 0.9rem 1rem;
    border: 1px solid color-mix(in srgb, #f59e0b 45%, var(--border-line));
    border-radius: 8px;
    background: color-mix(in srgb, #f59e0b 9%, var(--bg-surface));
}
.cashbook-due-banner > span { color: #f59e0b; font-size: 1.5rem; }
.cashbook-due-banner div { flex: 1; }
.cashbook-due-banner p { margin: 0.15rem 0 0; color: var(--text-secondary); font-size: 0.82rem; }
.cashbook-metrics {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    margin-bottom: 1rem;
    overflow: hidden;
    border: 1px solid var(--border-line);
    border-radius: 8px;
    background: var(--bg-surface);
}
.cashbook-metrics > div { display: grid; gap: 0.35rem; padding: 0.9rem 1rem; border-right: 1px solid var(--border-line); }
.cashbook-metrics > div:last-child { border-right: 0; }
.cashbook-metrics span { color: var(--text-secondary); font-size: 0.74rem; }
.cashbook-metrics strong { font: 750 1.02rem/1.2 "Cascadia Mono", Consolas, monospace; }
.positive { color: #34d399 !important; }
.negative { color: #fb7185 !important; }
.cashbook-workspace { display: grid; grid-template-columns: minmax(300px, 0.8fr) minmax(440px, 1.2fr); gap: 1rem; margin-bottom: 1rem; align-items: start; }
.cashbook-receipt-panel,
.cashbook-entry-panel,
.cashbook-ledger-section,
.cashbook-count-section,
.cashbook-settings-panel { overflow: visible; }
.cashbook-receipt-panel .section-head,
.cashbook-entry-panel .section-head,
.cashbook-ledger-section .section-head,
.cashbook-count-section .section-head { padding: 1rem 1.1rem; border-bottom: 1px solid var(--border-line); }
.cashbook-receipt-panel h2,
.cashbook-entry-panel h2,
.cashbook-ledger-section h2,
.cashbook-count-section h2 { margin: 0; font-size: 1.05rem; }
.cashbook-upload { display: grid; gap: 0.75rem; padding: 1rem; }
.cashbook-dropzone {
    display: grid;
    min-height: 180px;
    place-items: center;
    align-content: center;
    gap: 0.35rem;
    padding: 1.2rem;
    border: 1px dashed var(--border-line-strong);
    border-radius: 8px;
    background: var(--bg-base);
    cursor: pointer;
    text-align: center;
    transition: border-color 180ms ease, background-color 180ms ease;
}
.cashbook-dropzone:hover,
.cashbook-dropzone:focus-within { border-color: var(--accent); background: var(--accent-soft); }
.cashbook-dropzone input { width: 1px; height: 1px; overflow: hidden; position: absolute; opacity: 0; }
.cashbook-dropzone small { max-width: 38ch; color: var(--text-secondary); }
.cashbook-drop-icon { display: grid; width: 46px; height: 46px; place-items: center; border-radius: 50%; background: var(--accent-soft); color: var(--accent); }
.cashbook-self-receipt { margin: 0 1rem 1rem; border-top: 1px solid var(--border-line); }
.cashbook-self-receipt summary { padding: 0.9rem 0; color: var(--text-secondary); cursor: pointer; font-weight: 700; }
.cashbook-self-receipt form,
.cashbook-entry-form,
.cashbook-settings-form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.8rem; }
.cashbook-self-receipt form { padding-bottom: 0.4rem; }
.cashbook-self-receipt label,
.cashbook-entry-form label,
.cashbook-count-form label,
.cashbook-settings-form label { display: grid; gap: 0.35rem; color: var(--text-secondary); font-size: 0.78rem; font-weight: 700; }
.cashbook-receipt-queue { display: grid; border-top: 1px solid var(--border-line); }
.cashbook-receipt-queue > strong { padding: 0.85rem 1rem 0.5rem; font-size: 0.8rem; }
.cashbook-receipt-queue a { display: flex; justify-content: space-between; gap: 0.7rem; padding: 0.7rem 1rem; border-top: 1px solid var(--border-line); }
.cashbook-receipt-queue a:hover,
.cashbook-receipt-queue a.active { background: var(--accent-soft); }
.cashbook-receipt-queue small { color: var(--text-secondary); white-space: nowrap; }
.cashbook-recognition { display: flex; align-items: center; gap: 0.75rem; margin: 1rem 1rem 0; padding: 0.75rem; border: 1px solid var(--border-line); border-radius: 7px; background: var(--bg-base); }
.cashbook-recognition > span { color: #f59e0b; }
.cashbook-recognition.is-success > span { color: #34d399; }
.cashbook-recognition.is-report > span { color: #f59e0b; }
.cashbook-recognition div { display: grid; flex: 1; }
.cashbook-recognition small { color: var(--text-secondary); }
.cashbook-recognition a { color: var(--accent); font-size: 0.8rem; font-weight: 700; }
.cashbook-entry-form { padding: 1rem; }
.cashbook-report-import { display: grid; gap: 0.5rem; margin: 1rem 1rem 0; padding: 0.85rem; border: 1px solid var(--border-line-strong); border-radius: 7px; background: var(--bg-base); }
.cashbook-report-import p { margin: 0; color: var(--text-secondary); font-size: 0.78rem; }
.cashbook-report-import label { display: grid; gap: 0.35rem; color: var(--text-secondary); font-size: 0.78rem; font-weight: 700; }
.cashbook-post-warning { display: grid; gap: 0.15rem; padding: 0.75rem; border: 1px solid color-mix(in srgb, #f59e0b 35%, var(--border-line)); border-radius: 7px; background: color-mix(in srgb, #f59e0b 8%, transparent); font-size: 0.78rem; }
.cashbook-post-warning span { color: var(--text-secondary); }
.cashbook-filters { display: flex; flex-wrap: wrap; gap: 0.7rem; align-items: end; padding: 0.8rem 1rem; border-bottom: 1px solid var(--border-line); }
.cashbook-filters label { display: grid; gap: 0.25rem; color: var(--text-secondary); font-size: 0.72rem; }
.cashbook-search { flex: 1; min-width: 220px; }
.cashbook-ledger-head,
.cashbook-ledger-row { display: grid; grid-template-columns: 150px minmax(240px, 1.5fr) 100px 130px 130px 42px; gap: 0.8rem; align-items: center; }
.cashbook-ledger-head { padding: 0.6rem 1rem; border-bottom: 1px solid var(--border-line); color: var(--text-secondary); font-size: 0.7rem; font-weight: 700; }
.cashbook-ledger-row { min-height: 74px; padding: 0.75rem 1rem; border-bottom: 1px solid var(--border-line); }
.cashbook-ledger-row:last-child { border-bottom: 0; }
.cashbook-ledger-row.is-income { background: color-mix(in srgb, #34d399 2.5%, transparent); }
.cashbook-ledger-row.is-expense { background: color-mix(in srgb, #fb7185 2.5%, transparent); }
.cashbook-ledger-row.is-reversal { background: color-mix(in srgb, #f59e0b 4%, transparent); }
.cashbook-ledger-row.is-reversed { opacity: 0.68; }
.cashbook-ledger-row > div { display: grid; min-width: 0; gap: 0.18rem; }
.cashbook-ledger-row small { overflow: hidden; color: var(--text-secondary); font-size: 0.72rem; text-overflow: ellipsis; white-space: nowrap; }
.cashbook-ledger-row strong { min-width: 0; overflow-wrap: anywhere; }
.cashbook-signed { font-family: "Cascadia Mono", Consolas, monospace; }
.cashbook-row-actions { position: relative; }
.cashbook-row-actions > summary { display: grid; width: 36px; height: 36px; place-items: center; border-radius: 50%; cursor: pointer; list-style: none; }
.cashbook-row-actions > summary:hover { background: var(--bg-elevated); }
.cashbook-row-actions > div { position: absolute; z-index: 30; top: 40px; right: 0; display: grid; width: 280px; gap: 0.7rem; padding: 0.8rem; border: 1px solid var(--border-line-strong); border-radius: 8px; background: var(--bg-elevated); box-shadow: var(--shadow-sm); }
.cashbook-row-actions form { display: grid; gap: 0.6rem; }
.cashbook-count-layout { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(280px, 0.6fr); gap: 1rem; padding: 1rem; }
.cashbook-count-form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.8rem; }
.cashbook-denominations { display: grid; grid-template-columns: repeat(5, minmax(70px, 1fr)); gap: 0.55rem; padding: 0.75rem; border: 1px solid var(--border-line); border-radius: 7px; background: var(--bg-base); }
.cashbook-count-history { border-left: 1px solid var(--border-line); padding-left: 1rem; }
.cashbook-count-history h3 { margin: 0 0 0.7rem; font-size: 0.95rem; }
.cashbook-count-history article { display: flex; justify-content: space-between; gap: 0.7rem; padding: 0.65rem 0; border-bottom: 1px solid var(--border-line); }
.cashbook-count-history article > div { display: grid; gap: 0.15rem; }
.cashbook-count-history article > div:last-child { text-align: right; }
.cashbook-count-history small { color: var(--text-secondary); font-size: 0.7rem; }
.cashbook-adopt-balance { display: grid; gap: 0.4rem; margin-top: 0.75rem; padding: 0.75rem; border: 1px solid var(--warning-border, var(--border-line-strong)); border-radius: 7px; background: var(--bg-base); }
.cashbook-adopt-balance .btn { width: 100%; white-space: normal; }
.cashbook-settings-panel { max-width: 920px; }
.cashbook-settings-form { padding: 1rem; }
.cashbook-compliance-note { padding: 0.9rem; border: 1px solid var(--border-line); border-radius: 7px; background: var(--bg-base); }
.cashbook-compliance-note p { margin: 0.3rem 0 0; color: var(--text-secondary); }
.cashbook-count-section > .cashbook-compliance-note { margin: 1rem 1rem 0; }

@media (max-width: 1100px) {
    .cashbook-workspace,
    .cashbook-count-layout { grid-template-columns: 1fr; }
    .cashbook-count-history { border-top: 1px solid var(--border-line); border-left: 0; padding-top: 1rem; padding-left: 0; }
    .cashbook-ledger { overflow-x: auto; }
    .cashbook-ledger-head,
    .cashbook-ledger-row { min-width: 900px; }
}
@media (max-width: 760px) {
    .cashbook-intro { align-items: stretch; }
    .cashbook-balance { min-width: 0; text-align: left; }
    .cashbook-due-banner { align-items: flex-start; flex-wrap: wrap; }
    .cashbook-metrics { grid-template-columns: 1fr 1fr; }
    .cashbook-metrics > div:nth-child(2) { border-right: 0; }
    .cashbook-metrics > div:nth-child(-n+2) { border-bottom: 1px solid var(--border-line); }
    .cashbook-self-receipt form,
    .cashbook-entry-form,
    .cashbook-settings-form,
    .cashbook-count-form { grid-template-columns: 1fr; }
    .cashbook-denominations { grid-template-columns: repeat(3, minmax(70px, 1fr)); }
    .cashbook-filters > label,
    .cashbook-filters > button { width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
    .cashbook-dropzone { transition: none; }
}

/* Dashboard · Finanzen */
.commercial-intro { align-items: flex-end; }
.commercial-hub { overflow: hidden; }
.commercial-hub-head { padding: 0.9rem 1rem; border-bottom: 1px solid var(--border-line); }
.commercial-hub-head > div { display: grid; gap: 0.2rem; }
.commercial-hub-head h2 { margin: 0; font-size: 1rem; }
.commercial-hub-head p { margin: 0; color: var(--text-secondary); font-size: 0.74rem; }
.commercial-launch-list { display: grid; grid-template-columns: 1fr 1fr; }
.commercial-launch {
    display: grid;
    min-height: 92px;
    grid-template-columns: 2.6rem minmax(0, 1fr) auto 1.25rem;
    align-items: center;
    gap: 0.85rem;
    padding: 1rem;
    border-bottom: 1px solid var(--border-line);
    color: inherit;
    transition: background-color 160ms ease-out;
}
.commercial-launch:nth-child(odd) { border-right: 1px solid var(--border-line); }
.commercial-launch:last-child,
.commercial-launch:nth-last-child(2):nth-child(odd) { border-bottom: 0; }
.commercial-launch:hover { background: var(--bg-elevated); }
.commercial-launch:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
.commercial-launch-icon {
    display: grid;
    width: 2.6rem;
    height: 2.6rem;
    place-items: center;
    border-radius: 8px;
    font-weight: 800;
}
.commercial-launch-icon .ui-icon { width: 1.1rem; height: 1.1rem; }
.commercial-launch--quotes .commercial-launch-icon { color: #22c55e; background: color-mix(in srgb, #22c55e 13%, transparent); }
.commercial-launch--invoices .commercial-launch-icon { color: #a78bfa; background: color-mix(in srgb, #a78bfa 13%, transparent); }
.commercial-launch--cashbook .commercial-launch-icon { color: #2dd4bf; background: color-mix(in srgb, #2dd4bf 13%, transparent); }
.commercial-launch--expenses .commercial-launch-icon { color: #fb7185; background: color-mix(in srgb, #fb7185 13%, transparent); }
.commercial-launch-copy { display: grid; min-width: 0; gap: 0.22rem; }
.commercial-launch-copy strong { font-size: 0.86rem; }
.commercial-launch-copy small { overflow: hidden; color: var(--text-secondary); font-size: 0.7rem; text-overflow: ellipsis; white-space: nowrap; }
.commercial-launch-metric { display: grid; min-width: 7rem; gap: 0.16rem; text-align: right; }
.commercial-launch-metric strong { overflow: hidden; font: 740 0.8rem/1.2 "Cascadia Mono", Consolas, monospace; text-overflow: ellipsis; white-space: nowrap; }
.commercial-launch-metric small { color: var(--text-muted); font-size: 0.64rem; }
.commercial-launch-open { display: grid; place-items: center; color: var(--text-muted); }
.commercial-launch-open .ui-icon { width: 0.95rem; height: 0.95rem; }
.commercial-launch:hover .commercial-launch-open { color: var(--accent); }

.dashboard-view-tabs {
    display: flex;
    gap: 0.25rem;
    margin: -0.35rem 0 1rem;
    padding: 0.25rem;
    border: 1px solid var(--border-line);
    border-radius: 8px;
    background: var(--bg-surface);
}
.dashboard-view-tab {
    min-width: 8.5rem;
    padding: 0.58rem 0.9rem;
    border-radius: 6px;
    color: var(--text-secondary);
    font-size: 0.82rem;
    font-weight: 750;
    text-align: center;
}
.dashboard-view-tab:hover { color: var(--text-primary); background: var(--bg-elevated); }
.dashboard-view-tab.active { color: var(--text-primary); background: var(--accent-soft); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent) 32%, transparent); }
.dashboard-view-tab:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

.finance-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 0.75rem;
}
.finance-toolbar > div:first-child { display: grid; gap: 0.18rem; }
.finance-toolbar > div:first-child strong { font-size: 1rem; }
.finance-toolbar > div:first-child span { color: var(--text-secondary); font-size: 0.74rem; }
.finance-period-switch { display: flex; gap: 0.2rem; padding: 0.2rem; border: 1px solid var(--border-line); border-radius: 7px; background: var(--bg-surface); }
.finance-period-switch a { padding: 0.45rem 0.7rem; border-radius: 5px; color: var(--text-secondary); font-size: 0.72rem; font-weight: 700; }
.finance-period-switch a:hover { color: var(--text-primary); }
.finance-period-switch a.active { color: var(--text-primary); background: var(--bg-elevated); box-shadow: var(--shadow-sm); }

.finance-summary {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    margin-bottom: 1rem;
    overflow: hidden;
    border: 1px solid var(--border-line-strong);
    border-radius: 9px;
    background: var(--bg-surface);
}
.finance-summary a {
    display: grid;
    min-width: 0;
    gap: 0.25rem;
    padding: 0.95rem 1rem;
    border-right: 1px solid var(--border-line);
    color: inherit;
    transition: background-color 160ms ease-out;
}
.finance-summary a:last-child { border-right: 0; }
.finance-summary a:hover { background: var(--bg-elevated); }
.finance-summary span { color: var(--text-secondary); font-size: 0.72rem; }
.finance-summary strong { overflow: hidden; font: 780 1.18rem/1.2 "Cascadia Mono", Consolas, monospace; text-overflow: ellipsis; white-space: nowrap; }
.finance-summary small { color: var(--text-muted); font-size: 0.68rem; }
.finance-summary .is-alert { background: color-mix(in srgb, #ef4444 7%, var(--bg-surface)); }
.finance-summary .is-alert strong { color: #fb7185; }

.finance-split { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(320px, 0.85fr); gap: 1rem; margin-bottom: 1rem; }
.finance-performance-row { grid-template-columns: minmax(0, 0.9fr) minmax(380px, 1.1fr); }
.finance-section { margin-bottom: 1rem; overflow: visible; }
.finance-split > .finance-section { margin-bottom: 0; }
.finance-section-head { align-items: flex-start; min-height: 66px; padding: 0.9rem 1rem; border-bottom: 1px solid var(--border-line); }
.finance-section-head > div:first-child { display: grid; min-width: 0; gap: 0.2rem; }
.finance-section-head h2 { margin: 0; font-size: 1rem; text-wrap: balance; }
.finance-section-head p { max-width: 68ch; margin: 0; color: var(--text-secondary); font-size: 0.72rem; }
.finance-section-head > strong { font: 780 1rem/1.3 "Cascadia Mono", Consolas, monospace; }
.finance-method-note { margin: 0; padding: 0.75rem 1rem; border-top: 1px solid var(--border-line); color: var(--text-muted); font-size: 0.7rem; line-height: 1.5; }

.finance-pipeline-list { display: grid; padding: 0.35rem 1rem; }
.finance-pipeline-row { display: grid; grid-template-columns: 8rem minmax(100px, 1fr) 10.5rem; align-items: center; gap: 1rem; padding: 0.8rem 0; border-bottom: 1px solid var(--border-line); }
.finance-pipeline-row:last-child { border-bottom: 0; }
.finance-pipeline-row > div:first-child,
.finance-pipeline-row > div:last-child { display: grid; gap: 0.18rem; }
.finance-pipeline-row > div:last-child { text-align: right; }
.finance-pipeline-row span,
.finance-pipeline-row small { color: var(--text-secondary); font-size: 0.68rem; }
.finance-pipeline-row > div:last-child > strong { font-family: "Cascadia Mono", Consolas, monospace; font-size: 0.8rem; }
.finance-bar-track { height: 0.42rem; overflow: hidden; border-radius: 999px; background: var(--bg-elevated); }
.finance-bar { display: block; height: 100%; min-width: 2px; border-radius: inherit; background: var(--accent); }
.finance-bar--draft { background: #60a5fa; }
.finance-bar--sent { background: #a78bfa; }
.finance-bar--product { background: #34d399; }

.finance-forecast-list { display: grid; }
.finance-forecast-item { padding: 0.9rem 1rem; border-bottom: 1px solid var(--border-line); }
.finance-forecast-item:last-child { border-bottom: 0; }
.finance-forecast-item > div { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; margin-bottom: 0.65rem; }
.finance-forecast-item > div span { color: var(--text-secondary); font-size: 0.74rem; font-weight: 700; }
.finance-forecast-item > div strong { font: 780 1.05rem/1.2 "Cascadia Mono", Consolas, monospace; }
.finance-forecast-item dl { display: grid; gap: 0.35rem; margin: 0; }
.finance-forecast-item dl div { display: flex; justify-content: space-between; gap: 1rem; }
.finance-forecast-item dt,
.finance-forecast-item dd { margin: 0; color: var(--text-secondary); font-size: 0.7rem; }
.finance-forecast-item dd { color: var(--text-primary); font-family: "Cascadia Mono", Consolas, monospace; }

.finance-result-layout { display: grid; grid-template-columns: minmax(300px, 0.8fr) minmax(480px, 1.2fr); }
.finance-result-metrics { display: grid; grid-template-columns: 1fr 1fr; border-right: 1px solid var(--border-line); }
.finance-result-metrics > div { display: grid; gap: 0.28rem; padding: 0.9rem 1rem; border-right: 1px solid var(--border-line); border-bottom: 1px solid var(--border-line); }
.finance-result-metrics > div:nth-child(2n) { border-right: 0; }
.finance-result-metrics > div:nth-last-child(-n+2) { border-bottom: 0; }
.finance-result-metrics span { color: var(--text-secondary); font-size: 0.7rem; }
.finance-result-metrics strong { font: 760 0.98rem/1.25 "Cascadia Mono", Consolas, monospace; }
.finance-result-metrics small { color: var(--text-muted); font-size: 0.64rem; }
.finance-result-metrics .is-positive strong { color: #34d399; }
.finance-result-metrics .is-negative strong { color: #fb7185; }
.finance-cashflow-chart { display: flex; min-height: 205px; align-items: stretch; gap: 0.6rem; padding: 2.6rem 1rem 0.85rem; position: relative; }
.finance-chart-legend { position: absolute; top: 0.75rem; right: 1rem; display: flex; gap: 0.8rem; color: var(--text-secondary); font-size: 0.66rem; }
.finance-chart-legend span { display: flex; align-items: center; gap: 0.3rem; }
.finance-chart-legend i { width: 0.55rem; height: 0.55rem; border-radius: 2px; }
.finance-cashflow-month { display: grid; min-width: 0; flex: 1; grid-template-rows: auto 1fr auto; gap: 0.35rem; text-align: center; }
.finance-cashflow-month > span { color: var(--text-secondary); font-size: 0.66rem; }
.finance-cashflow-month > small { overflow: hidden; font: 600 0.58rem/1.2 "Cascadia Mono", Consolas, monospace; text-overflow: ellipsis; }
.finance-cashflow-bars { display: flex; min-height: 105px; align-items: flex-end; justify-content: center; gap: 0.18rem; border-bottom: 1px solid var(--border-line-strong); }
.finance-cashflow-bars i { display: block; width: min(38%, 1rem); min-height: 2px; border-radius: 3px 3px 0 0; }
.finance-cashflow-chart .income { background: #34d399; }
.finance-cashflow-chart .expense { background: #fb7185; }

.finance-ranking-list,
.finance-customer-list { display: grid; }
.finance-ranking-row { display: grid; grid-template-columns: 1.5rem minmax(0, 1fr) auto; align-items: center; gap: 0.75rem; padding: 0.65rem 1rem; border-bottom: 1px solid var(--border-line); }
.finance-ranking-row:last-child { border-bottom: 0; }
.finance-ranking-row > span { color: var(--text-muted); font: 700 0.68rem/1 "Cascadia Mono", Consolas, monospace; }
.finance-ranking-row > div { display: grid; min-width: 0; gap: 0.38rem; }
.finance-ranking-row > div strong { overflow: hidden; font-size: 0.76rem; text-overflow: ellipsis; white-space: nowrap; }
.finance-ranking-row > strong { font: 700 0.72rem/1.2 "Cascadia Mono", Consolas, monospace; }
.finance-clv { display: grid; flex: 0 0 auto; gap: 0.1rem; text-align: right; }
.finance-clv span { color: var(--text-secondary); font-size: 0.64rem; }
.finance-clv strong { font: 760 0.9rem/1.2 "Cascadia Mono", Consolas, monospace; }
.finance-customer-row { display: grid; grid-template-columns: 1.8rem minmax(0, 1fr) auto; align-items: center; gap: 0.7rem; padding: 0.62rem 1rem; border-bottom: 1px solid var(--border-line); }
.finance-customer-row:last-child { border-bottom: 0; }
.finance-customer-row > div { display: grid; min-width: 0; gap: 0.16rem; }
.finance-customer-row > div strong { overflow: hidden; font-size: 0.76rem; text-overflow: ellipsis; white-space: nowrap; }
.finance-customer-row small { color: var(--text-secondary); font-size: 0.64rem; }
.finance-customer-row > strong { font: 700 0.72rem/1.2 "Cascadia Mono", Consolas, monospace; }
.finance-abc { display: grid; width: 1.65rem; height: 1.65rem; place-items: center; border-radius: 50%; font-size: 0.68rem; font-weight: 800; }
.finance-abc--a { color: #34d399; background: color-mix(in srgb, #34d399 14%, transparent); }
.finance-abc--b { color: #60a5fa; background: color-mix(in srgb, #60a5fa 14%, transparent); }
.finance-abc--c { color: var(--text-secondary); background: var(--bg-elevated); }

.finance-receivable-list { display: grid; }
.finance-receivable-head,
.finance-receivable-row { display: grid; grid-template-columns: 130px minmax(180px, 1fr) 105px 150px 120px; align-items: center; gap: 0.8rem; padding: 0.65rem 1rem; }
.finance-receivable-head { color: var(--text-secondary); font-size: 0.66rem; font-weight: 750; }
.finance-receivable-row { min-height: 54px; border-top: 1px solid var(--border-line); color: inherit; font-size: 0.74rem; }
.finance-receivable-row:hover { background: var(--bg-elevated); }
.finance-receivable-row > * { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.finance-receivable-row > strong:last-child { font-family: "Cascadia Mono", Consolas, monospace; text-align: right; }
.finance-receivable-row.is-overdue { background: color-mix(in srgb, #ef4444 4%, transparent); }
.finance-receivable-row.is-overdue > span:nth-child(4) { color: #fb7185; font-weight: 700; }

.finance-initiative-add { flex: 0 0 auto; }
.finance-initiative-add > summary { list-style: none; cursor: pointer; }
.finance-initiative-add > summary::-webkit-details-marker { display: none; }
.finance-initiative-add > summary .ui-icon { width: 0.9rem; height: 0.9rem; }
.finance-initiative-add[open] { flex: 1 0 100%; }
.finance-initiative-form { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.7rem; margin-top: 0.8rem; padding-top: 0.85rem; border-top: 1px solid var(--border-line); }
.finance-initiative-form label { display: grid; gap: 0.3rem; color: var(--text-secondary); font-size: 0.7rem; font-weight: 700; }
.finance-efficiency-summary { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-bottom: 1px solid var(--border-line); }
.finance-efficiency-summary > div { display: grid; gap: 0.22rem; padding: 0.85rem 1rem; border-right: 1px solid var(--border-line); }
.finance-efficiency-summary > div:last-child { border-right: 0; }
.finance-efficiency-summary span { color: var(--text-secondary); font-size: 0.7rem; }
.finance-efficiency-summary strong { font: 760 1rem/1.2 "Cascadia Mono", Consolas, monospace; }
.finance-efficiency-summary small { color: var(--text-muted); font-size: 0.64rem; }
.finance-efficiency-summary .is-negative strong { color: #fb7185; }
.finance-initiative-list { display: grid; }
.finance-initiative-list article { display: grid; grid-template-columns: minmax(190px, 1.5fr) repeat(4, minmax(90px, 0.65fr)) 2rem; align-items: center; gap: 0.75rem; padding: 0.7rem 1rem; border-bottom: 1px solid var(--border-line); }
.finance-initiative-list article:last-child { border-bottom: 0; }
.finance-initiative-list article > div { display: grid; min-width: 0; gap: 0.16rem; }
.finance-initiative-list article > div:first-child strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.finance-initiative-list span,
.finance-initiative-list small { color: var(--text-secondary); font-size: 0.64rem; }
.finance-initiative-list article > div:not(:first-child) strong { font: 700 0.72rem/1.2 "Cascadia Mono", Consolas, monospace; }

@media (max-width: 1100px) {
    .finance-summary { grid-template-columns: 1fr 1fr; }
    .finance-summary a:nth-child(2) { border-right: 0; }
    .finance-summary a:nth-child(-n+2) { border-bottom: 1px solid var(--border-line); }
    .finance-split,
    .finance-performance-row { grid-template-columns: 1fr; }
    .finance-result-layout { grid-template-columns: 1fr; }
    .finance-result-metrics { border-right: 0; border-bottom: 1px solid var(--border-line); }
    .finance-initiative-list article { grid-template-columns: minmax(180px, 1.5fr) repeat(2, minmax(90px, 0.65fr)) 2rem; }
    .finance-initiative-list article > div:nth-child(4),
    .finance-initiative-list article > div:nth-child(5) { display: none; }
}
@media (max-width: 720px) {
    .commercial-intro { align-items: stretch; }
    .commercial-launch-list { grid-template-columns: 1fr; }
    .commercial-launch,
    .commercial-launch:nth-child(odd),
    .commercial-launch:nth-last-child(2):nth-child(odd) { border-right: 0; border-bottom: 1px solid var(--border-line); }
    .commercial-launch:last-child { border-bottom: 0; }
    .commercial-launch { grid-template-columns: 2.6rem minmax(0, 1fr) 1.25rem; }
    .commercial-launch-metric { grid-column: 2; min-width: 0; text-align: left; }
    .commercial-launch-open { grid-column: 3; grid-row: 1 / 3; }
    .dashboard-view-tabs { margin-top: 0; }
    .dashboard-view-tab { flex: 1; min-width: 0; }
    .finance-toolbar { align-items: stretch; flex-direction: column; }
    .finance-period-switch { display: grid; grid-template-columns: repeat(3, 1fr); }
    .finance-period-switch a { text-align: center; }
    .finance-summary { grid-template-columns: 1fr; }
    .finance-summary a { border-right: 0; border-bottom: 1px solid var(--border-line); }
    .finance-summary a:nth-child(-n+2) { border-bottom: 1px solid var(--border-line); }
    .finance-summary a:last-child { border-bottom: 0; }
    .finance-pipeline-row { grid-template-columns: minmax(0, 1fr) auto; gap: 0.55rem; }
    .finance-pipeline-row .finance-bar-track { grid-column: 1 / -1; grid-row: 2; }
    .finance-pipeline-row > div:last-child { grid-column: 2; grid-row: 1; }
    .finance-result-metrics { grid-template-columns: 1fr; }
    .finance-result-metrics > div { border-right: 0; }
    .finance-result-metrics > div:nth-last-child(-n+2) { border-bottom: 1px solid var(--border-line); }
    .finance-result-metrics > div:last-child { border-bottom: 0; }
    .finance-cashflow-chart { gap: 0.25rem; padding-inline: 0.65rem; }
    .finance-cashflow-month > small { display: none; }
    .finance-section-head { flex-wrap: wrap; }
    .finance-section-head .finance-clv { width: 100%; text-align: left; }
    .finance-receivable-head { display: none; }
    .finance-receivable-row { grid-template-columns: minmax(0, 1fr) auto; gap: 0.25rem 0.7rem; padding-block: 0.75rem; }
    .finance-receivable-row > span:nth-child(2) { grid-column: 1; grid-row: 2; }
    .finance-receivable-row > span:nth-child(3) { grid-column: 1; grid-row: 3; }
    .finance-receivable-row > span:nth-child(4) { grid-column: 2; grid-row: 2; text-align: right; }
    .finance-receivable-row > strong:last-child { grid-column: 2; grid-row: 1; }
    .finance-initiative-form { grid-template-columns: 1fr; }
    .finance-efficiency-summary { grid-template-columns: 1fr; }
    .finance-efficiency-summary > div { border-right: 0; border-bottom: 1px solid var(--border-line); }
    .finance-efficiency-summary > div:last-child { border-bottom: 0; }
    .finance-initiative-list article { grid-template-columns: minmax(0, 1fr) auto; gap: 0.35rem 0.7rem; }
    .finance-initiative-list article > div:first-child { grid-column: 1 / -1; }
    .finance-initiative-list article > div:nth-child(2),
    .finance-initiative-list article > div:nth-child(3) { display: grid; }
    .finance-initiative-list article form { grid-column: 2; grid-row: 1; justify-self: end; }
}
@media (prefers-reduced-motion: reduce) {
    .commercial-launch,
    .finance-summary a { transition: none; }
}

.signature-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 1rem;
    margin-bottom: 1rem;
}
.signature-card {
    display: grid;
    gap: 0.45rem;
    padding: 1rem;
    border: 1px solid var(--border-line);
    border-radius: 8px;
    background: var(--bg-elevated);
}
.signature-image {
    width: 100%;
    height: 110px;
    object-fit: contain;
    background: #fff;
    border-radius: 6px;
}
.signature-card strong,
.signature-card span {
    display: block;
}
.signature-card span {
    color: var(--text-secondary);
    font-size: 0.82rem;
}
.signature-add {
    min-height: 180px;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    color: #f5c518;
    text-align: center;
    background: transparent;
}
.signature-add span {
    font-size: 2.4rem;
    line-height: 1;
}
.signature-add strong {
    color: var(--text-primary);
    font-size: 0.95rem;
}
.signature-add:hover {
    border-color: var(--accent);
}
.signature-form {
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px solid var(--border-line);
}
.signature-pad {
    display: grid;
    gap: 0.55rem;
    max-width: 760px;
}
.signature-pad-label {
    color: var(--text-secondary);
    font-size: 0.86rem;
}
.signature-pad canvas {
    display: block;
    width: 100%;
    min-width: 320px;
    height: 260px;
    border: 1px solid var(--border-line);
    border-radius: 8px;
    background: #fff;
    touch-action: none;
    cursor: crosshair;
    user-select: none;
}
.signature-pad-actions {
    display: flex;
    gap: 0.75rem;
    flex-wrap: wrap;
    margin-top: 0.75rem;
}
.ticket-media-card form {
    margin-top: 0.5rem;
}

.form-card { max-width: 900px; margin: 1.2rem auto; }
.tenant-form { padding: 1.2rem; }
.forms-overview { padding: 1.4rem; }
.forms-table td { vertical-align: middle; }
.form-link {
    display: inline-block;
    max-width: 520px;
    overflow: hidden;
    text-overflow: ellipsis;
}
.qr-thumb {
    width: 150px;
    height: 150px;
    padding: 0.35rem;
    border-radius: 4px;
    background: #fff;
    object-fit: contain;
}
.form-editor-card {
    max-width: 620px;
    margin: 1rem auto;
}
.online-form-fields {
    display: grid;
    gap: 0.65rem;
}
.online-form-field-row {
    display: grid;
    grid-template-columns: 1fr auto;
    align-items: center;
    gap: 1rem;
    min-height: 44px;
    padding: 0.55rem 0.75rem;
    border: 1px solid var(--border-line);
    background: var(--bg-base);
}
.switch-line {
    display: flex;
    align-items: center;
    gap: 0.7rem;
}
.switch-line input,
.check-row input {
    accent-color: var(--accent);
}
.switch-line span {
    margin: 0;
    color: var(--text-primary);
    font-size: 0.84rem;
    letter-spacing: 0;
    text-transform: none;
}
.form-settings-row {
    display: flex;
    flex-wrap: wrap;
    gap: 1.2rem;
}
.shared-form-page .form-card { max-width: 760px; }
fieldset {
    margin: 0 0 1.6rem;
    padding: 0;
    border: 0;
}
legend {
    margin-bottom: 0.75rem;
    color: var(--text-secondary);
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.15em;
    text-transform: uppercase;
}
.form-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
}
label span {
    display: block;
    margin-bottom: 0.35rem;
    color: var(--text-secondary);
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
}
.wide { grid-column: span 2; }
.quote-line {
    align-items: end;
    padding-bottom: 0.5rem;
    border-bottom: 1px solid var(--border-line);
}
.quote-line-indented .wide {
    padding-left: 1.25rem;
    border-left: 2px solid var(--border-line);
}
.quote-line-group .wide input {
    font-weight: 700;
}
.quote-line-child .wide span {
    color: var(--text-muted, #6b7280);
}
.quote-detail-group {
    font-weight: 700;
}
.quote-detail-child {
    color: var(--text-muted, #6b7280);
}
.quote-line:last-child {
    border-bottom: 0;
}
.quote-line-remove-wrap {
    display: flex;
    align-items: end;
    justify-content: flex-end;
    padding-bottom: 0.15rem;
}
.quote-line-remove {
    min-width: 2.25rem;
    font-size: 1.1rem;
    line-height: 1;
}
.form-actions, .upload-row {
    display: flex;
    gap: 0.75rem;
    align-items: center;
    justify-content: flex-end;
    padding-top: 1rem;
    border-top: 1px solid var(--border-line);
}

.work-report-material-form {
    padding: 1.2rem;
}
.work-report-material-picker {
    margin: 0;
    padding: 0;
    border: 0;
}
.work-report-material-picker legend {
    margin: 0;
    padding: 0;
    color: var(--text-primary);
    font-size: 1.15rem;
    font-weight: 800;
    letter-spacing: 0;
    text-transform: none;
}
.work-report-material-head {
    display: flex;
    align-items: end;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.75rem 0 1rem;
}
.work-report-material-head p {
    margin: 0;
    max-width: 70ch;
}
.work-report-material-head .resource-search {
    flex: 0 1 24rem;
}
.work-report-material-list {
    border-top: 1px solid var(--border-line);
}
.work-report-material-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(11rem, auto);
    gap: 1rem;
    align-items: center;
    min-height: 3.75rem;
    padding: 0.65rem 0;
    border-bottom: 1px solid var(--border-line);
}
.work-report-material-row[hidden] {
    display: none;
}
.work-report-material-row.is-unavailable {
    opacity: 0.55;
}
.work-report-material-name,
.work-report-material-quantity {
    display: flex;
    align-items: center;
    margin: 0;
    font-size: inherit;
    letter-spacing: normal;
    text-transform: none;
}
.work-report-material-name {
    min-width: 0;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.2rem;
}
.work-report-material-name strong {
    color: var(--text-primary);
    overflow-wrap: anywhere;
}
.work-report-material-name small {
    color: var(--text-muted);
}
.work-report-material-quantity {
    justify-content: flex-end;
    gap: 0.6rem;
    color: var(--text-secondary);
    font-weight: 700;
}
.work-report-material-quantity .field-input {
    width: 6.5rem;
    text-align: right;
}
.work-report-material-quantity > span {
    display: inline;
    margin: 0;
    color: inherit;
    font-size: inherit;
    letter-spacing: normal;
    text-transform: none;
}
@media (max-width: 700px) {
    .work-report-material-head {
        align-items: stretch;
        flex-direction: column;
    }
    .work-report-material-head .resource-search {
        flex-basis: auto;
        max-width: none;
    }
    .work-report-material-row {
        grid-template-columns: minmax(0, 1fr) 9rem;
    }
}
.form-actions .btn-ghost:first-child { margin-right: auto; }

@media (max-width: 760px) {
    .action-bar, .intro-actions, .intro > .actions, .section-actions, .termine-actions { justify-content: stretch; }
    .action-bar > .btn, .intro-actions > .btn, .intro > .actions > .btn, .section-actions > .btn, .termine-actions > .btn,
    .action-bar > form, .intro-actions > form, .intro > .actions > form, .section-actions > form, .termine-actions > form { flex: 1 1 auto; }
    .action-bar form .btn, .intro-actions form .btn, .intro > .actions form .btn, .section-actions form .btn, .termine-actions form .btn { width: 100%; }
    .danger-zone { width: 100%; margin: 0.35rem 0 0; padding: 0.65rem 0 0; border-left: 0; border-top: 1px solid var(--border-line); }
    .form-actions { flex-wrap: wrap; }
    .form-actions > .btn, .form-actions > form { flex: 1 1 140px; }
}

@media (prefers-reduced-motion: reduce) {
    .btn, .icon-btn { transition: none; }
}
.project-sales-actions-row {
    justify-content: flex-start;
    flex-wrap: wrap;
    border-top: 0;
    padding-top: 0;
}
.project-catalog-quote-form {
    display: flex;
    gap: 0.5rem;
    align-items: center;
    flex-wrap: wrap;
}
.project-catalog-quote-form .field-input {
    min-width: 12rem;
    max-width: 18rem;
}
.quote-catalog-multi {
    display: grid;
    gap: 0.35rem;
    max-height: 28rem;
    overflow: auto;
    padding: 0.75rem;
    margin-bottom: 0.5rem;
    border: 1px solid var(--border-line);
    border-radius: 8px;
    background: var(--surface-muted, rgba(0, 0, 0, 0.03));
}
.quote-catalog-check {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    margin: 0;
    padding: 0.35rem 0;
}
.quote-catalog-group-title {
    font-weight: 600;
    margin: 0;
}
.quote-catalog-group-heading {
    font-weight: 600;
    margin: 0.65rem 0 0.35rem;
    font-size: 1rem;
}
.quote-catalog-group:first-child .quote-catalog-group-heading {
    margin-top: 0;
}
.quote-catalog-group-check {
    margin: 0.15rem 0 0.35rem;
}
.quote-catalog-group-check .quote-catalog-group-title {
    font-size: 1rem;
}
.quote-catalog-preview {
    list-style: none;
    margin: 0 0 0.75rem 1.85rem;
    padding: 0;
    color: var(--text-muted, #888);
    font-size: 0.92rem;
}
.quote-catalog-preview li {
    margin: 0.2rem 0;
    padding: 0;
}
.quote-catalog-group .quote-catalog-subgroup-title {
    font-weight: 600;
    font-size: 0.92rem;
    color: var(--text-muted, #6b7280);
    margin: 0.45rem 0 0.15rem 0.35rem;
    padding-left: 0.35rem;
    border-left: 2px solid var(--border-line);
}
.quote-form-surface {
    padding-top: 1.25rem;
}
.quote-form-workflow {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem 1.5rem;
    margin: 0 0 1.5rem;
    padding: 1rem 1.25rem;
    list-style: none;
    border: 1px solid var(--border-line);
    border-radius: 10px;
    background: var(--surface-muted, rgba(0, 0, 0, 0.03));
    counter-reset: quote-step;
}
.quote-form-workflow li {
    margin: 0;
    color: var(--text-muted, #888);
}
.quote-form-block {
    margin-bottom: 1.75rem;
    padding-bottom: 1.5rem;
    border-bottom: 1px solid var(--border-line);
}
.quote-form-block:last-child {
    border-bottom: 0;
    margin-bottom: 0;
    padding-bottom: 0;
}
.quote-form-block-head {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 1rem;
}
.quote-form-block-head h2 {
    margin: 0;
    font-size: 1.1rem;
}
.quote-form-step {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.75rem;
    height: 1.75rem;
    border-radius: 999px;
    background: var(--accent, #c9a227);
    color: #111;
    font-weight: 700;
    font-size: 0.85rem;
    flex-shrink: 0;
}
.quote-closing-picker {
    padding-top: 0.85rem;
    border-top: 1px solid var(--border-line);
}
.quote-closing-picker-head,
.quote-closing-panel-foot {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
}
.quote-closing-picker-head > div {
    display: grid;
    gap: 0.2rem;
}
.quote-closing-picker-head small,
.quote-closing-panel-foot small {
    color: var(--text-secondary);
}
.quote-closing-add svg {
    width: 1rem;
    height: 1rem;
}
.quote-closing-panel {
    display: grid;
    gap: 0.55rem;
    margin-top: 0.85rem;
    padding: 0.85rem;
    border: 1px solid var(--border-line);
    border-radius: 10px;
    background: color-mix(in srgb, var(--bg-surface) 88%, var(--accent) 12%);
}
.quote-closing-panel[hidden] {
    display: none;
}
.quote-closing-panel-foot .quote-closing-remove {
    min-height: 2.25rem;
    padding: 0.35rem 0.65rem;
}
.quote-catalog-hint {
    margin: 0 0 0.75rem;
}
.quote-catalog-controls {
    margin-bottom: 0.5rem;
}
.quote-catalog-actions {
    margin-top: 0.75rem;
}
.quote-catalog-group-highlight {
    border: 1px solid var(--accent, #c9a227);
    border-radius: 8px;
    padding: 0.5rem 0.75rem;
    background: color-mix(in srgb, var(--accent, #c9a227) 8%, transparent);
}
.quote-form-actions-block .form-actions {
    margin-top: 0;
}
.quote-import-notice {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
}
.quote-import-notice > .muted { display: none; }
.quote-import-upload > p.muted:nth-of-type(2) { display: none; }
.quote-form-surface { overflow: visible; }
.quote-form-surface #quote-form { padding-inline: 0.9rem; }
.quote-line {
    grid-template-columns: auto minmax(110px, .65fr) minmax(100px, .5fr) minmax(260px, 2fr) repeat(4, minmax(90px, .55fr)) auto;
    gap: .65rem;
}
.quote-line .wide { grid-column: auto; }
.quote-line-drag {
    align-self: center;
    min-width: 2.25rem;
    min-height: 2.75rem;
    border: 1px solid var(--border-line);
    border-radius: 7px;
    background: var(--bg-elevated);
    color: var(--text-secondary);
    cursor: grab;
}
.quote-line-drag:active { cursor: grabbing; }
.quote-line-copy {
    grid-template-columns: auto minmax(130px, .65fr) minmax(100px, .5fr) minmax(300px, 2.5fr) repeat(4, minmax(70px, .4fr)) auto;
    background: color-mix(in srgb, var(--accent) 4%, transparent);
}
.quote-catalog-search { position: relative; max-width: 760px; }
.quote-catalog-search-results {
    display: grid;
    gap: 2px;
    margin-top: .4rem;
    border-radius: 8px;
    background: var(--bg-surface);
    box-shadow: 0 12px 32px rgba(0,0,0,.2);
}
.quote-catalog-search-results:empty { display: none; }
.quote-catalog-search-option {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    width: 100%;
    padding: .75rem .85rem;
    border: 1px solid var(--border-line);
    border-radius: 7px;
    background: var(--bg-surface);
    color: var(--text-primary);
    text-align: left;
    cursor: pointer;
}
.quote-catalog-search-option:hover,
.quote-catalog-search-option.active,
.quote-catalog-search-option:focus-visible {
    border-color: var(--accent);
    background: var(--accent-soft);
    outline: none;
}
.quote-catalog-search-option.is-added,
.quote-catalog-search-option:disabled {
    border-color: var(--border-line);
    background: var(--bg-elevated);
    color: var(--text-muted);
    cursor: default;
    opacity: 0.72;
}
.quote-catalog-search-option span:first-child { display: grid; gap: .2rem; }
.quote-catalog-search-option small { color: var(--text-secondary); }
.quote-catalog-search-option.is-package {
    padding-block: .9rem;
    border-color: color-mix(in srgb, var(--accent) 38%, var(--border-line));
    background: color-mix(in srgb, var(--accent) 8%, var(--bg-surface));
}
.quote-catalog-search-option.is-package strong { font-size: 1rem; }
.quote-catalog-search-option.is-main { background: var(--bg-elevated); }
.quote-catalog-search-option.is-child {
    width: calc(100% - 1.25rem);
    margin-left: 1.25rem;
}
.quote-catalog-search-option.is-child strong { font-weight: 600; }
.quote-catalog-search-empty { padding: .85rem; color: var(--text-secondary); }
.quote-catalog-tag-filter {
    display: grid;
    gap: 0.5rem;
    margin-top: 0.85rem;
}
.quote-catalog-tag-filter > span {
    color: var(--text-secondary);
    font-size: 0.75rem;
    font-weight: 700;
}
.quote-catalog-tag-list {
    display: flex;
    gap: 0.45rem;
    flex-wrap: wrap;
}
.quote-catalog-tag {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 0.1rem 0.65rem;
    align-items: center;
    max-width: 270px;
    padding: 0.48rem 0.62rem;
    border: 1px solid var(--border-line);
    border-radius: 8px;
    background: var(--bg-elevated);
    color: var(--text-primary);
    text-align: left;
    cursor: pointer;
    transition: border-color 180ms ease, background-color 180ms ease, color 180ms ease;
}
.quote-catalog-tag strong,
.quote-catalog-tag small {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.quote-catalog-tag strong { font-size: 0.78rem; }
.quote-catalog-tag small {
    grid-column: 1;
    color: var(--text-muted);
    font-size: 0.66rem;
}
.quote-catalog-tag > span {
    grid-column: 2;
    grid-row: 1 / span 2;
    min-width: 1.55rem;
    padding: 0.18rem 0.35rem;
    border-radius: 999px;
    background: var(--bg-surface);
    color: var(--text-secondary);
    font-size: 0.68rem;
    text-align: center;
}
.quote-catalog-tag:hover,
.quote-catalog-tag:focus-visible,
.quote-catalog-tag.is-active {
    border-color: var(--accent);
    background: var(--accent-soft);
    outline: none;
}
.quote-catalog-tag.is-active > span {
    background: var(--accent);
    color: var(--accent-on);
}
.quote-preview-panel {
    position: fixed;
    inset: 0 0 0 auto;
    z-index: 50;
    width: min(78vw, 1100px);
    padding: .75rem;
    background: var(--bg-base);
    box-shadow: -18px 0 48px rgba(0,0,0,.35);
}
.quote-preview-panel[hidden] { display: none; }
.quote-preview-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    min-height: 3.5rem;
}
.quote-preview-panel iframe {
    width: 100%;
    height: calc(100vh - 5rem);
    border: 1px solid var(--border-line);
    border-radius: 8px;
    background: #fff;
}
.quote-preview-open { overflow: hidden; }
@media (max-width: 1100px) {
    .quote-line, .quote-line-copy { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .quote-line-drag, .quote-line-remove-wrap { grid-column: auto; }
    .quote-preview-panel { width: 100vw; }
}
@media (max-width: 620px) {
    .quote-line, .quote-line-copy { grid-template-columns: 1fr; }
    .quote-import-notice { align-items: stretch; flex-direction: column; }
    .quote-catalog-search-option { align-items: flex-start; flex-direction: column; }
}
@media (prefers-reduced-motion: reduce) {
    .quote-preview-panel,
    .quote-catalog-tag { transition: none; }
}

/* Angebotspositionen: Mischposition = Brennstelle, darunter Kalkulationspositionen. */
.quote-line {
    position: relative;
    grid-template-columns: 52px 150px 112px minmax(250px, 1fr) 92px 112px 128px 108px 116px 128px 88px 76px;
    gap: 0.65rem;
    align-items: end;
    margin-bottom: 0.7rem;
    padding: 0.8rem;
    border: 1px solid var(--border-line);
    border-radius: 10px;
    background: var(--bg-elevated);
}
.quote-line-indented {
    margin-left: 2.2rem;
    background: color-mix(in srgb, var(--bg-elevated) 94%, var(--accent));
}
.quote-line-indented .wide { padding-left: 0; border-left: 0; }
.quote-line-group {
    border-color: color-mix(in srgb, var(--accent) 42%, var(--border-line));
    background: color-mix(in srgb, var(--accent) 5%, var(--bg-elevated));
}
.quote-line-drag {
    display: grid;
    place-items: center;
    align-content: center;
    min-width: 44px;
    width: 44px;
    min-height: 44px;
    padding: 0;
    color: var(--text-secondary);
    transition: border-color 180ms ease, background-color 180ms ease, color 180ms ease;
}
.quote-line-drag:hover,
.quote-line-drag:focus-visible { border-color: var(--accent); background: var(--accent-soft); color: var(--text-primary); outline: none; }
.quote-line-drag .ui-icon { width: 1.35rem; height: 1.35rem; }
.quote-line-title { position: relative; min-width: 0; }
.quote-line-title-input { width: 100%; }
.quote-line-description { grid-column: 4 / span 4; }
.quote-line-image { position: relative; grid-column: 8; align-self: end; }
.quote-image-toggle { position: relative; width: 44px; height: 44px; }
.quote-image-toggle .ui-icon { width: 1.35rem; height: 1.35rem; }
.quote-line-image.has-image .quote-image-toggle { border-color: var(--accent); color: var(--accent); background: var(--accent-soft); }
.quote-line-image.has-image .quote-image-toggle::after { content: ""; position: absolute; top: 5px; right: 5px; width: 7px; height: 7px; border: 2px solid var(--bg-elevated); border-radius: 50%; background: #22c55e; }
.quote-image-panel { position: absolute; z-index: 40; right: 0; top: calc(100% + 0.4rem); width: min(360px, 80vw); padding: 0.8rem; border: 1px solid var(--border-line); border-radius: 9px; background: var(--bg-surface); box-shadow: 0 16px 36px rgb(0 0 0 / 26%); }
.quote-image-panel[hidden] { display: none; }
.quote-image-panel label { display: block; }
.quote-image-panel small { display: block; margin-top: 0.4rem; color: var(--text-muted); font-size: 0.72rem; line-height: 1.4; }
.quote-image-panel input[type="file"] { width: 100%; min-height: 44px; padding: 0.45rem; }
.quote-price-output { align-self: stretch; display: grid; align-content: end; gap: 0.35rem; padding-bottom: 0.15rem; }
.quote-price-output > span { color: var(--text-secondary); font-size: 0.72rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; }
.quote-price-output strong { min-height: 44px; display: flex; align-items: center; white-space: nowrap; }
.quote-line-remove-wrap { gap: 0.3rem; }
.quote-pdf-toggle { grid-column: 11 / span 2; align-self: center; display: flex; align-items: center; gap: 0.5rem; }
.quote-pdf-toggle span { display: inline; margin: 0; letter-spacing: 0; text-transform: none; }
.quote-add-child { grid-column: 2 / span 2; justify-self: start; }
.quote-catalog-save-panel {
    grid-column: 2 / -1;
    display: flex;
    align-items: end;
    gap: 0.6rem;
    padding-top: 0.65rem;
    border-top: 1px solid var(--border-line);
}
.quote-catalog-save-panel[hidden] { display: none; }
.quote-catalog-save-panel label { flex: 1 1 24rem; }
.quote-mixed-search-results {
    position: absolute;
    z-index: 30;
    top: calc(100% + 0.35rem);
    left: 0;
    right: 0;
    display: grid;
    gap: 0.2rem;
    border-radius: 9px;
    background: var(--bg-surface);
    box-shadow: 0 16px 36px rgb(0 0 0 / 28%);
}
.quote-mixed-search-results:empty { display: none; }
.quote-mixed-search-option {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 0.15rem 0.8rem;
    width: 100%;
    padding: 0.72rem 0.8rem;
    border: 1px solid var(--border-line);
    border-radius: 8px;
    background: var(--bg-surface);
    color: var(--text-primary);
    text-align: left;
    cursor: pointer;
}
.quote-mixed-search-option:hover,
.quote-mixed-search-option:focus-visible { border-color: var(--accent); background: var(--accent-soft); outline: none; }
.quote-mixed-search-create { border-color: color-mix(in srgb, var(--accent) 55%, var(--border-line)); }
.quote-mixed-search-create strong::before { content: "+"; display: inline-grid; place-items: center; width: 1.25rem; height: 1.25rem; margin-right: 0.45rem; border-radius: 50%; background: var(--accent); color: var(--bg-page); }
.quote-mixed-search-option small { grid-column: 1; color: var(--text-muted); }
.quote-mixed-search-option > span { grid-column: 2; grid-row: 1 / span 2; align-self: center; margin: 0; color: var(--text-primary); font-size: 0.75rem; letter-spacing: 0; text-transform: none; }
.quote-mixed-search-empty { padding: 0.75rem; color: var(--text-secondary); font-size: 0.75rem; }
.quote-labor-rates { margin: 0 0 1rem; border: 1px solid var(--border-line); border-radius: 9px; background: var(--bg-elevated); }
.quote-labor-rates summary { display: flex; align-items: center; gap: 0.65rem; min-height: 46px; padding: 0.65rem 0.8rem; cursor: pointer; list-style: none; }
.quote-labor-rates summary::-webkit-details-marker { display: none; }
.quote-labor-rates summary .ui-icon { width: 1.2rem; height: 1.2rem; color: var(--accent); }
.quote-labor-rates summary > span { display: grid; gap: 0.1rem; }
.quote-labor-rates summary strong { font-size: 0.86rem; }
.quote-labor-rates summary small { color: var(--text-muted); font-size: 0.7rem; }
.quote-labor-rate-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0.75rem; padding: 0 0.8rem 0.8rem; }
.quote-labor-rate-grid label > div { display: flex; align-items: center; gap: 0.4rem; }
.quote-labor-rate-grid label small { color: var(--text-secondary); white-space: nowrap; }
.quote-line-labor .quote-markup-field,
.quote-line-labor .quote-margin-field,
.quote-line-labor .quote-price-field { display: none; }
.quote-line-labor .quote-purchase-field { grid-column: span 2; }
.quote-line-labor .quote-unit-field select { pointer-events: none; background: var(--bg-base); }
.quote-line[data-line-kind="heading"] { grid-template-columns: 44px minmax(0, 1fr) 76px; align-items: end; padding-block: 0.7rem; }
.quote-line[data-line-kind="heading"] > :not(.quote-line-drag):not(.quote-line-title):not(.quote-line-remove-wrap):not(input[type="hidden"]) { display: none; }
.quote-line[data-line-kind="heading"] .quote-line-title { grid-column: 2; }
.quote-line[data-line-kind="heading"] .quote-line-title > span { font-weight: 750; }
.quote-line[data-line-kind="heading"] .quote-line-title-input { font-size: 1rem; font-weight: 700; }
.quote-line[data-line-kind="heading"] .quote-line-remove-wrap { grid-column: 3; }
.quote-line[data-line-kind="heading"] .quote-save-to-catalog { display: none; }
.service-show-children { display: flex; align-items: center; gap: 0.35rem; margin-top: 0.55rem; color: var(--text-secondary); font-size: 0.7rem; }
.service-show-children span { margin: 0; font-size: inherit; letter-spacing: 0; text-transform: none; }
.service-catalog-costs-table textarea.field-input { display: block; min-width: 14rem; margin-top: 0.4rem; resize: vertical; }
.service-catalog-costs-table td input[data-cost="markup"] { display: block; margin-top: 0.4rem; }

@media (max-width: 1350px) {
    .quote-line { grid-template-columns: repeat(4, minmax(0, 1fr)); }
    .quote-line-drag, .quote-line-remove-wrap, .quote-line-description, .quote-line-image, .quote-pdf-toggle, .quote-add-child, .quote-catalog-save-panel { grid-column: auto; }
    .quote-line-title { grid-column: span 2; }
    .quote-line-description, .quote-line-image, .quote-catalog-save-panel { grid-column: span 2; }
    .quote-line[data-line-kind="heading"] { grid-template-columns: 44px minmax(0, 1fr) 76px; }
    .quote-line[data-line-kind="heading"] .quote-line-title { grid-column: 2; }
    .quote-line[data-line-kind="heading"] .quote-line-remove-wrap { grid-column: 3; }
}
@media (max-width: 720px) {
    .quote-line { grid-template-columns: 1fr; }
    .quote-line > *, .quote-line-title, .quote-line-description, .quote-line-image, .quote-catalog-save-panel { grid-column: 1; }
    .quote-line-indented { margin-left: 0.8rem; }
    .quote-catalog-save-panel { align-items: stretch; flex-direction: column; }
    .quote-form-surface #quote-form { padding-inline: 0.65rem; }
    .quote-labor-rate-grid { grid-template-columns: 1fr; }
    .quote-image-panel { position: static; width: 100%; margin-top: 0.4rem; }
    .quote-line[data-line-kind="heading"] { grid-template-columns: 44px minmax(0, 1fr) 76px; }
    .quote-line[data-line-kind="heading"] .quote-line-title { grid-column: 2; }
    .quote-line[data-line-kind="heading"] .quote-line-remove-wrap { grid-column: 3; }
}
@media (prefers-reduced-motion: reduce) {
    .quote-line-drag { transition: none; }
}
.upload-row { padding: 1.2rem; justify-content: flex-start; }
.doc-list { list-style: none; margin: 0; padding: 0 1.2rem 1.2rem; }
.doc-list li {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.9rem 0;
    border-top: 1px solid var(--border-line);
}
.results {
    margin-top: 0.45rem;
    max-height: 260px;
    overflow-y: auto;
    border: 1px solid var(--border-line);
    border-radius: 4px;
    background: var(--bg-base);
}
.results:empty { display: none; }
.result-group-title {
    padding: 0.45rem 0.85rem;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--text-muted);
    border-bottom: 1px solid var(--border-line);
    background: var(--bg-elevated);
}
.result-empty {
    padding: 0.8rem 0.85rem;
    color: var(--text-muted);
    font-size: 0.82rem;
}
.result-refresh {
    display: block;
    width: 100%;
    padding: 0.55rem;
    border: 0;
    border-top: 1px solid var(--border-line);
    background: transparent;
    color: var(--accent);
    cursor: pointer;
    text-align: center;
    font-size: 0.82rem;
}
.contact-picker .selected-panel {
    margin-top: 0.6rem;
}
.contact-picker .selected-panel span {
    display: block;
    color: var(--text-muted);
    font-size: 0.82rem;
}
.contact-picker-hint {
    margin: 0.45rem 0 0;
    font-size: 0.82rem;
}
.ticket-contact-results {
    position: relative;
    z-index: 4;
}
.result-row {
    display: block;
    width: 100%;
    padding: 0.7rem 0.85rem;
    border: 0;
    border-bottom: 1px solid var(--border-line);
    background: transparent;
    color: var(--text-primary);
    text-align: left;
    cursor: pointer;
}
.result-row:hover { background: color-mix(in srgb, var(--accent) 8%, transparent); }
.result-row strong, .result-row span, .result-row em { display: block; }
.result-row span, .result-row em { color: var(--text-muted); font-size: 0.78rem; font-style: normal; }
.selected-panel, .mm-selected {
    padding: 0.8rem;
    border: 1px solid color-mix(in srgb, var(--accent) 35%, transparent);
    border-radius: 4px;
    background: var(--accent-soft);
}
.more-mieter {
    padding: 1rem;
    margin-bottom: 1rem;
    border: 1px solid var(--border-line);
    border-radius: 6px;
    background: var(--bg-base);
}
.mm-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 0.75rem;
}
.mm-title { font-weight: 700; }
.mm-remove {
    border: 1px solid rgba(220,38,38,0.35);
    border-radius: 4px;
    background: rgba(220,38,38,0.08);
    color: #f87171;
    padding: 0.35rem 0.6rem;
    cursor: pointer;
}
.report-result { border-color: rgba(16,185,129,0.4); }
.personnel-list {
    display: grid;
    gap: 1rem;
    padding: 1.2rem;
}
.person-card {
    padding: 1rem;
    border: 1px solid var(--border-line);
    border-radius: 6px;
    background: var(--bg-base);
}
.person-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 0.8rem;
    margin-top: 0.8rem;
    color: var(--text-muted);
    font-size: 0.78rem;
}
.check-row {
    display: flex;
    gap: 0.5rem;
    align-items: center;
    color: var(--text-secondary);
}
.person-avatar {
    width: 42px;
    height: 42px;
    border-radius: 999px;
    object-fit: cover;
    border: 2px solid color-mix(in srgb, var(--accent) 40%, transparent);
}
.avatar-fallback {
    display: inline-grid;
    place-items: center;
    background: linear-gradient(135deg, #ff4d5f, var(--accent));
    color: var(--accent-on);
    font-weight: 800;
}
.personnel-table th,
.personnel-table td {
    padding: 0.95rem 1rem;
}
.person-row {
    cursor: pointer;
}
.person-row.active td {
    background: color-mix(in srgb, var(--accent) 10%, transparent);
    border-left: 4px solid var(--accent);
}
.person-name-cell {
    display: flex;
    align-items: center;
    gap: 1rem;
    min-width: 240px;
}
.role-check {
    display: inline-grid;
    place-items: center;
    width: 32px;
    height: 32px;
    border-radius: 999px;
    background: rgba(34, 197, 94, 0.14);
    color: #86efac;
    font-weight: 800;
}
.role-muted {
    color: var(--text-muted);
}
.person-detail {
    margin-bottom: 1rem;
    padding: 1.2rem;
}
.person-detail-grid {
    display: grid;
    grid-template-columns: 240px minmax(0, 1fr);
    gap: 1.2rem;
}
.person-avatar-panel {
    display: flex;
    flex-direction: column;
    gap: 0.9rem;
    align-items: center;
    padding: 1rem;
    border: 1px solid var(--border-line);
    border-radius: 6px;
    background: var(--bg-base);
    text-align: center;
}
.person-avatar-panel span {
    display: block;
    margin-top: 0.25rem;
    color: var(--text-secondary);
    font-size: 0.82rem;
}
.person-avatar-large {
    width: 132px;
    height: 132px;
    border-radius: 999px;
    object-fit: cover;
    border: 3px solid color-mix(in srgb, var(--accent) 55%, transparent);
}
.person-secondary-actions {
    justify-content: flex-start;
    margin-top: 0.8rem;
}
.team-layout {
    display: grid;
    grid-template-columns: minmax(0, 0.95fr) minmax(0, 1.05fr);
    gap: 1rem;
    align-items: start;
}
.team-list {
    display: grid;
    gap: 0.8rem;
    padding: 1.2rem;
}
.team-card {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    padding: 1rem;
    border: 1px solid var(--border-line);
    border-radius: 6px;
    background: var(--bg-base);
}
.team-card h3 {
    margin: 0 0 0.3rem;
}
.team-card p {
    margin: 0;
    color: var(--text-secondary);
}
.team-card-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    align-items: start;
    justify-content: flex-end;
}
.team-card-actions form {
    margin: 0;
}
.note-list {
    display: grid;
    gap: 0.8rem;
    padding: 1.2rem;
}
.note-card {
    display: flex;
    align-items: start;
    gap: 0.6rem;
    padding: 1rem;
    border: 1px solid var(--border-line);
    border-radius: 6px;
    background: var(--bg-base);
}
.note-card-form {
    flex: 1;
    min-width: 0;
    display: grid;
    gap: 0.55rem;
}
.note-card-form textarea {
    resize: vertical;
}
.note-card-meta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.6rem;
}
.note-card-delete {
    flex-shrink: 0;
}
.account-panel {
    display: grid;
    grid-template-columns: 260px minmax(0, 1fr);
    gap: 1.2rem;
    padding: 1.2rem;
}
.account-content {
    min-width: 0;
}
.account-info {
    margin-top: 1.2rem;
}
.mail-modal {
    position: fixed;
    inset: 0;
    z-index: 50;
    display: grid;
    place-items: center;
    padding: 1.5rem;
    background: rgba(0, 0, 0, 0.72);
}
.mail-window {
    width: min(920px, 100%);
    max-height: calc(100vh - 3rem);
    overflow-y: auto;
    border: 1px solid color-mix(in srgb, var(--accent) 55%, transparent);
    border-radius: 8px;
    background: var(--bg-surface);
    box-shadow: 0 24px 80px rgba(0, 0, 0, 0.45);
}
.mail-warning {
    margin: 1rem 1.2rem 0;
    padding: 0.75rem 0.85rem;
    border: 1px solid rgba(220, 38, 38, 0.4);
    border-radius: 4px;
    background: rgba(220, 38, 38, 0.08);
    color: #fca5a5;
}
.object-detail-row td {
    background: color-mix(in srgb, var(--accent) 6%, transparent);
    white-space: normal;
}
.object-detail {
    margin: 0.35rem 0;
    border: 1px solid var(--border-line-strong);
    border-radius: 6px;
    background: var(--bg-base);
    overflow: hidden;
}
.object-detail-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.85rem 1rem;
    border-bottom: 1px solid var(--border-line);
}
.object-detail-page {
    padding: 0;
    overflow: hidden;
}
.object-detail-subtitle {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.6rem;
    margin: 0.35rem 0 0;
}
.object-detail-area-badge {
    background: var(--accent-soft);
    border-color: color-mix(in srgb, var(--accent) 35%, transparent);
    color: var(--accent);
}
.object-detail-layout {
    display: grid;
    grid-template-columns: 380px minmax(0, 1fr);
    min-height: 520px;
}
.object-detail-sidebar {
    padding: 1rem;
    border-right: 1px solid var(--border-line);
    background: rgba(255, 255, 255, 0.02);
    width: 380px;
    display: flex;
    flex-direction: column;
    gap: 0.9rem;
    min-width: 0;
    overflow: hidden;
    flex-shrink: 0;
}
.object-detail-identity {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}
.object-detail-identity-icon {
    width: 2.5rem;
    height: 2.5rem;
    border-radius: 8px;
    display: grid;
    place-items: center;
    background: color-mix(in srgb, var(--accent) 22%, transparent);
    color: var(--accent);
    font-size: 1.1rem;
    flex-shrink: 0;
}
.object-detail-identity-name {
    display: block;
    font-size: 1rem;
    line-height: 1.3;
}
.object-detail-mini-stats {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.55rem;
}
.object-detail-mini-stat {
    padding: 0.65rem 0.75rem;
    border: 1px solid var(--border-line);
    border-radius: 6px;
    background: rgba(255, 255, 255, 0.03);
}
.object-detail-mini-stat-value {
    display: block;
    font-size: 1.15rem;
    font-weight: 700;
    line-height: 1.1;
}
.object-detail-mini-stat-label {
    display: block;
    margin-top: 0.15rem;
    font-size: 0.76rem;
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.04em;
}
.object-detail-map {
    border: 1px solid var(--border-line-strong);
    border-radius: 8px;
    overflow: hidden;
    background: rgba(0, 0, 0, 0.18);
    width: 100%;
    max-width: 100%;
    min-width: 0;
}
.object-detail-map-viewport {
    position: relative;
    width: 100%;
    height: 120px;
    overflow: hidden;
    contain: layout paint style;
    background: rgba(0, 0, 0, 0.12);
}
.object-detail-map--empty {
    min-height: 110px;
    display: grid;
    place-items: center;
}
.object-detail-map-placeholder {
    padding: 1rem;
    text-align: center;
}
.object-detail-map-placeholder p {
    margin: 0.35rem 0 0.75rem;
    color: var(--text-secondary);
    font-size: 0.88rem;
}
.object-detail-map-pin {
    font-size: 1.4rem;
}
.object-detail-map-frame {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: 0;
    display: block;
}
.object-detail-map-link {
    display: block;
    padding: 0.55rem 0.75rem;
    font-size: 0.82rem;
    color: var(--accent);
    text-decoration: none;
    border-top: 1px solid var(--border-line);
    background: rgba(255, 255, 255, 0.02);
}
.object-detail-map-link:hover {
    text-decoration: underline;
}
.object-detail-info-card {
    border: 1px solid var(--border-line);
    border-radius: 8px;
    overflow: hidden;
    background: rgba(255, 255, 255, 0.02);
}
.object-detail-info-row {
    display: grid;
    grid-template-columns: minmax(0, 38%) minmax(0, 1fr);
    gap: 0.65rem;
    padding: 0.7rem 0.8rem;
    border-bottom: 1px solid var(--border-line);
    align-items: start;
}
.object-detail-info-row:last-child {
    border-bottom: 0;
}
.object-detail-info-label {
    font-size: 0.76rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--text-secondary);
}
.object-detail-info-value {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    flex-wrap: wrap;
    font-size: 0.92rem;
    min-width: 0;
    word-break: break-word;
}
.object-detail-info-value--stack {
    flex-direction: column;
    align-items: flex-start;
    gap: 0.15rem;
}
.object-detail-key {
    font-size: 0.92rem;
}
.object-detail-notes {
    padding: 0.8rem;
    border: 1px solid var(--border-line);
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.02);
}
.object-detail-notes p {
    margin: 0.45rem 0 0;
    font-size: 0.9rem;
    line-height: 1.5;
    color: var(--text-secondary);
}
.object-detail-qr-card {
    margin-top: auto;
    padding: 0.85rem;
    border: 1px solid var(--border-line);
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.03);
}
.object-detail-qr-layout {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 0.75rem;
    align-items: start;
    margin-top: 0.55rem;
}
.object-detail-qr {
    width: 72px;
    height: 72px;
    border-radius: 6px;
    background: #fff;
    padding: 0.25rem;
    flex-shrink: 0;
}
.object-detail-qr-copy {
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
    min-width: 0;
}
.object-detail-qr-copy p {
    margin: 0;
    font-size: 0.8rem;
    line-height: 1.4;
}
.object-detail-url {
    display: block;
    padding: 0.45rem 0.5rem;
    border-radius: 4px;
    background: rgba(0, 0, 0, 0.22);
    font-size: 0.72rem;
    line-height: 1.35;
    word-break: break-all;
    color: var(--text-secondary);
}
.object-detail-meta {
    margin: 0;
}
.object-detail-meta-row {
    margin-bottom: 1rem;
}
.object-detail-meta-row dt {
    margin: 0 0 0.35rem;
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--text-secondary);
}
.object-detail-meta-row dd {
    margin: 0;
    display: flex;
    align-items: center;
    gap: 0.45rem;
    flex-wrap: wrap;
}
.object-detail-main {
    padding: 1rem 2rem 1.25rem;
    min-width: 0;
}
.object-detail-tabs {
    margin-top: 0;
}
.object-detail-search {
    display: flex;
    gap: 0.6rem;
    align-items: center;
    margin-bottom: 0.85rem;
}
.object-detail-search .field-input {
    flex: 1;
}
.object-detail-contacts-table th:last-child,
.object-detail-contacts-table td:last-child {
    width: 7rem;
    white-space: nowrap;
}
.object-detail-empty-row td {
    padding: 0;
    border-bottom: 0;
}
.object-detail-empty {
    padding: 3rem 1rem;
    text-align: center;
    color: var(--text-secondary);
}
.object-detail-foot {
    display: flex;
    flex-wrap: wrap;
    gap: 0.65rem;
    margin-top: 1rem;
}
.object-name-link {
    color: inherit;
    text-decoration: none;
}
.object-name-link:hover strong {
    color: var(--accent);
}
@media (max-width: 960px) {
    .object-detail-layout {
        grid-template-columns: 1fr;
    }
    .object-detail-sidebar {
        width: auto;
        border-right: 0;
        border-bottom: 1px solid var(--border-line);
    }
    .object-detail-main {
        padding: 1rem 1.1rem 1.25rem;
    }
    .object-detail-qr-layout {
        grid-template-columns: 1fr;
        justify-items: start;
    }
}

.object-form-section {
    margin-top: 1.5rem;
    padding-top: 1.25rem;
    border-top: 1px solid var(--border-line);
}
.object-form-section:first-of-type {
    margin-top: 0;
    padding-top: 0;
    border-top: 0;
}
.object-form-section-title {
    display: flex;
    align-items: center;
    gap: 0.65rem;
    margin: 0 0 1rem;
    font-size: 1.05rem;
}
.object-form-section-num {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.65rem;
    height: 1.65rem;
    border-radius: 999px;
    background: var(--accent);
    color: #fff;
    font-size: 0.82rem;
    font-weight: 700;
}
.object-form-hint {
    margin: 0.5rem 0 0;
}
.object-form-participants {
    margin-top: 1rem;
}
.object-form-participants-outside {
    padding: 0 1.2rem 1.2rem;
}
    margin-top: 1rem;
}
.object-status-badge {
    text-transform: none;
}
.object-status-angebot { background: rgba(37, 99, 235, 0.15); color: #2563eb; }
.object-status-laufend { background: rgba(5, 150, 105, 0.15); color: #059669; }
.object-status-abgerechnet { background: rgba(124, 58, 237, 0.15); color: #7c3aed; }
.object-status-wartung { background: rgba(217, 119, 6, 0.15); color: #d97706; }
.object-status-archiviert { background: rgba(100, 116, 139, 0.18); color: #64748b; }
.object-overview-grid,
.object-finance-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
    gap: 0.75rem;
    margin-bottom: 1.25rem;
}
.object-kpi-card {
    padding: 0.85rem 1rem;
    border: 1px solid var(--border-line);
    border-radius: 8px;
    background: rgba(0, 0, 0, 0.12);
}
.object-kpi-card strong {
    display: block;
    margin-top: 0.35rem;
    font-size: 1.15rem;
}
.object-person-card {
    padding: 0.9rem 1rem;
    margin-bottom: 0.85rem;
    border: 1px solid var(--border-line);
    border-radius: 8px;
    display: grid;
    gap: 0.35rem;
}
.object-legacy-hint {
    margin-bottom: 1rem;
    font-size: 0.88rem;
}
.object-tech-params {
    margin: 0;
    white-space: pre-wrap;
    font-family: inherit;
    font-size: 0.92rem;
}
.object-vorgaenge-section {
    margin-bottom: 1.5rem;
}
.object-inline-form {
    margin-bottom: 1rem;
    padding-bottom: 1rem;
    border-bottom: 1px solid var(--border-line);
}
.object-journal-list {
    display: grid;
    gap: 0.75rem;
}
.object-journal-item {
    padding: 0.85rem 1rem;
    border: 1px solid var(--border-line);
    border-radius: 8px;
}
.object-journal-item header {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    align-items: baseline;
    margin-bottom: 0.45rem;
}
.object-media-section {
    margin-bottom: 1.25rem;
    padding-bottom: 1rem;
    border-bottom: 1px solid var(--border-line);
}
.object-media-section:last-child {
    border-bottom: 0;
}
.object-upload-form {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    align-items: center;
}

.compact-table th,
.compact-table td {
    padding: 0.65rem 0.8rem;
}
.import-box {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 1.2rem;
}
.import-box h2 { margin: 0 0 0.25rem; }
.import-box p { margin: 0; color: var(--text-secondary); }
.import-box form { display: flex; gap: 0.6rem; align-items: center; min-width: 420px; }
.flash {
    margin-bottom: 1rem;
    padding: 0.85rem 1rem;
    border-radius: 5px;
    border: 1px solid rgba(16,185,129,0.35);
    background: rgba(16,185,129,0.1);
    color: #a7f3d0;
}
.flash-error {
    border-color: rgba(220,38,38,0.4);
    background: rgba(220,38,38,0.1);
    color: #fecaca;
}
.footer {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: center;
    gap: 0.6rem 1.5rem;
    padding: 1.5rem 0;
    color: var(--text-muted);
    font-size: 0.78rem;
}
.footer-main {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}
.footer-version {
    color: var(--text-secondary);
}
.footer-legal a {
    color: inherit;
    text-decoration: none;
}
.footer-legal a:hover {
    text-decoration: underline;
}
.login-legal-nav {
    display: flex;
    justify-content: center;
    gap: 1rem;
    margin-top: 1.2rem;
    font-size: 0.78rem;
}
.login-legal-nav a {
    color: var(--text-muted);
    text-decoration: none;
}
.login-legal-nav a:hover {
    text-decoration: underline;
}

.aufmass-editor-wrap {
    overflow-x: auto;
}
.aufmass-sheet {
    --aufmass-paper-bg: #fff;
    --aufmass-paper-text: #111827;
    --aufmass-paper-border: #cbd5e1;
    --aufmass-head-border: #111827;
    --aufmass-cell-head-bg: #e5e7eb;
    --aufmass-cell-sum-bg: #f3f4f6;
    --aufmass-cell-sum-td-bg: #fafafa;
    --aufmass-grid-border: #94a3b8;
    --aufmass-legal-text: #374151;
    --aufmass-sign-line: #111827;
    background: var(--aufmass-paper-bg);
    color: var(--aufmass-paper-text);
    border: 1px solid var(--aufmass-paper-border);
    border-radius: 8px;
    padding: 18px;
    min-width: 980px;
}
.aufmass-letterhead {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
    align-items: start;
    margin-bottom: 16px;
    padding-bottom: 12px;
    border-bottom: 2px solid var(--aufmass-head-border);
}
.aufmass-letterhead-logo img {
    max-height: 72px;
    max-width: 260px;
    object-fit: contain;
}
.aufmass-logo-dark {
    display: none;
}
.aufmass-logo-light {
    display: block;
}
:root[data-theme="light"] .aufmass-logo-dark {
    display: none;
}
:root[data-theme="light"] .aufmass-logo-light {
    display: block;
}
:root[data-theme="dark"] .aufmass-logo-light {
    display: none;
}
:root[data-theme="dark"] .aufmass-logo-dark {
    display: block;
}
:root[data-theme="dark"] .aufmass-logo-dark-fallback {
    filter: brightness(0) invert(1);
}
.logo-panel-dark {
    background: #111827;
    border-radius: 8px;
    padding: 12px;
}
.aufmass-letterhead-fallback {
    font-size: 1.25rem;
}
.aufmass-letterhead-address {
    text-align: right;
    font-size: 0.82rem;
    line-height: 1.45;
}
.aufmass-sheet-meta {
    margin-bottom: 12px;
}
.aufmass-sheet-types {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 14px;
    align-items: center;
    margin-bottom: 10px;
    font-size: 0.82rem;
}
.aufmass-sheet-types-label {
    font-weight: 600;
}
.aufmass-type-option,
.aufmass-type-pill {
    display: inline-flex;
    align-items: center;
    gap: 4px;
}
.aufmass-type-pill.active {
    font-weight: 700;
    text-decoration: underline;
}
.aufmass-sheet-project-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px 16px;
    font-size: 0.84rem;
}
.aufmass-inline-input {
    display: inline-block;
    width: auto;
    min-width: 80px;
    padding: 2px 6px;
    font-size: 0.84rem;
}
.aufmass-page-input {
    width: 64px;
}
.aufmass-matrix-wrap {
    margin: 8px 0 14px;
}
.aufmass-matrix {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
    font-size: 0.78rem;
}
.aufmass-matrix th,
.aufmass-matrix td {
    border: 1px solid var(--aufmass-grid-border);
    padding: 2px;
    vertical-align: middle;
    text-align: center;
}
.aufmass-corner {
    width: 130px;
    min-width: 130px;
    background: var(--aufmass-cell-head-bg);
    position: relative;
    height: 56px;
    padding: 0 !important;
}
.aufmass-corner-top,
.aufmass-corner-bottom {
    display: block;
    position: absolute;
    font-size: 0.68rem;
    font-weight: 600;
    line-height: 1.2;
}
.aufmass-corner-top {
    top: 6px;
    right: 8px;
    text-align: right;
    max-width: 110px;
}
.aufmass-corner-bottom {
    bottom: 6px;
    left: 8px;
}
.aufmass-col-head,
.aufmass-row-head {
    background: var(--aufmass-cell-head-bg);
    font-weight: 600;
}
.aufmass-col-head-inner {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-height: 72px;
    padding: 4px 2px;
    position: relative;
}
.aufmass-col-code,
.aufmass-col-title,
.aufmass-col-parent {
    font-size: 0.68rem;
    line-height: 1.2;
}
.aufmass-col-code {
    font-family: ui-monospace, monospace;
    font-weight: 700;
}
.aufmass-col-parent {
    color: var(--text-muted);
    font-size: 0.62rem;
}
.aufmass-col-code-input {
    font-family: ui-monospace, monospace;
    font-weight: 700;
}
.aufmass-col-photo-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    align-self: center;
    width: 24px;
    height: 24px;
    margin-top: 2px;
    border: 1px dashed var(--border-line-strong);
    border-radius: 6px;
    color: var(--accent);
    text-decoration: none;
    background: var(--bg-base);
}
.aufmass-col-photo-btn.has-images {
    border-style: solid;
    background: rgba(14, 116, 144, 0.12);
}
.aufmass-photo-icon {
    font-size: 0.95rem;
    font-weight: 700;
    line-height: 1;
}
.aufmass-photo-count {
    position: absolute;
    top: 2px;
    right: 2px;
    min-width: 14px;
    height: 14px;
    padding: 0 3px;
    border-radius: 999px;
    background: var(--accent);
    color: var(--accent-on);
    font-size: 0.55rem;
    font-weight: 800;
    line-height: 14px;
}
.aufmass-col-photo-btn {
    position: relative;
}
.aufmass-total-row td {
    background: var(--bg-elevated);
}
.service-catalog-costs-table .service-cost-input {
    min-width: 88px;
    padding: 0.35rem 0.45rem;
    font-size: 0.82rem;
}
.service-catalog-costs-table .service-quantity-input {
    min-width: 68px;
    max-width: 88px;
}
.service-catalog-costs-table td select.field-input {
    width: calc(100% - 88px - 0.4rem);
    margin-left: 0.4rem;
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    padding-right: 2rem;
    background-image: linear-gradient(45deg, transparent 50%, var(--text-secondary) 50%), linear-gradient(135deg, var(--text-secondary) 50%, transparent 50%);
    background-position: calc(100% - 18px) center, calc(100% - 13px) center;
    background-size: 5px 5px, 5px 5px;
    background-repeat: no-repeat;
}
.service-catalog-costs-table th small {
    display: block;
    color: var(--text-muted);
    font-size: 0.62rem;
    font-weight: 600;
    text-transform: none;
}
.service-catalog-rate-hint {
    display: grid;
    gap: 0.2rem;
    align-content: center;
    padding: 0.75rem 0.9rem;
    border: 1px solid color-mix(in srgb, var(--accent) 30%, var(--border-line));
    border-radius: var(--radius-md);
    background: color-mix(in srgb, var(--accent) 8%, var(--bg-elevated));
}
.service-catalog-rate-hint strong {
    color: var(--text-primary);
    font-size: 0.82rem;
}
.service-catalog-rate-hint span {
    color: var(--text-muted);
    font-size: 0.75rem;
    line-height: 1.4;
}
.service-catalog-costs-table .service-level-2 td:nth-child(2) {
    padding-left: 1rem;
}
.service-catalog-costs-table td {
    vertical-align: top;
}
.service-catalog-groups { display: grid; gap: 0.9rem; padding: 1rem 1.2rem 1.2rem; border-top: 1px solid var(--border-line); }
.service-catalog-group { border: 1px solid var(--border-line); border-radius: var(--radius-md); background: var(--bg-elevated); }
.service-catalog-editor .service-catalog-group.tenant-form { padding: 1rem; border-top: 1px solid var(--border-line); }
.service-catalog-group-head { display: grid; gap: 0.2rem; grid-column: 1 / -1; margin-bottom: 0.75rem; }
.service-catalog-group-head strong { color: var(--text-primary); font-size: 0.9rem; }
.service-catalog-group-head span { color: var(--text-muted); font-size: 0.75rem; }
.service-catalog-group > .form-grid,
.service-catalog-group > .form-actions { grid-column: 1 / -1; }
.service-catalog-group--legacy { padding: 1rem; }
.work-report-invoice-check { display: inline-flex; align-items: center; gap: 0.4rem; color: var(--text-secondary); font-size: 0.72rem; cursor: pointer; }
.work-report-invoice-check input { width: 1rem; height: 1rem; accent-color: var(--accent); }
.work-report-invoice-bar { position: sticky; z-index: 15; bottom: 0.75rem; display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-top: 0.8rem; padding: 0.75rem 1rem; border: 1px solid var(--border-line); border-radius: var(--radius-md); background: var(--bg-base); box-shadow: 0 10px 28px rgb(0 0 0 / 20%); }
.service-catalog-tags-panel {
    display: grid;
    gap: 0.85rem;
    padding: 1.1rem 1.2rem;
    border-block: 1px solid var(--border-line);
    background: color-mix(in srgb, var(--accent) 4%, var(--bg-surface));
}
.service-tag-create {
    display: grid;
    grid-template-columns: minmax(180px, 0.65fr) minmax(280px, 1.35fr) auto;
    gap: 0.7rem;
    align-items: end;
}
.service-tag-create label,
.service-tag-row {
    min-width: 0;
}
.service-tag-create label {
    display: grid;
    gap: 0.35rem;
}
.service-tag-list {
    display: grid;
    gap: 0.45rem;
}
.service-tag-row {
    display: grid;
    grid-template-columns: minmax(150px, 0.55fr) minmax(240px, 1.45fr) auto 2.3rem 2.3rem;
    gap: 0.5rem;
    align-items: center;
}
.service-tag-usage {
    white-space: nowrap;
    color: var(--text-muted);
    font-size: 0.75rem;
}
.service-tag-picker summary {
    min-width: 92px;
    padding: 0.42rem 0.55rem;
    border: 1px solid var(--border-line);
    border-radius: 7px;
    color: var(--text-secondary);
    font-size: 0.75rem;
    cursor: pointer;
}
.service-tag-picker[open] summary {
    border-color: var(--accent);
    color: var(--text-primary);
}
.service-tag-picker-menu {
    display: grid;
    gap: 0.35rem;
    min-width: 240px;
    padding-top: 0.55rem;
}
.service-tag-picker-menu label,
.service-tag-create-choice label {
    display: flex;
    gap: 0.55rem;
    align-items: flex-start;
    cursor: pointer;
}
.service-tag-picker-menu label span {
    display: grid;
    gap: 0.1rem;
}
.service-tag-picker-menu small {
    max-width: 34ch;
    color: var(--text-muted);
    font-size: 0.68rem;
    line-height: 1.35;
}
.service-tag-create-choice {
    display: flex;
    gap: 0.6rem 1rem;
    flex-wrap: wrap;
    padding: 0.75rem;
    border: 1px solid var(--border-line);
    border-radius: var(--radius-md);
}
.service-tag-create-choice legend {
    padding-inline: 0.3rem;
    color: var(--text-secondary);
    font-size: 0.75rem;
}
@media (max-width: 820px) {
    .service-tag-create,
    .service-tag-row { grid-template-columns: 1fr; }
    .service-tag-row .icon-btn { width: 100%; }
}
.project-aufmass-actions {
    flex-wrap: wrap;
    gap: 0.5rem;
}
.project-aufmass-table .badge {
    white-space: nowrap;
}
.project-aufmass-hub-head {
    margin-bottom: 0;
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
}
.project-aufmass-subtabs {
    margin: 0;
    padding: 0 1rem;
    flex-wrap: wrap;
    background: var(--bg-elevated);
    border: 1px solid var(--border-line);
    border-top: 0;
    border-bottom: 0;
}
.project-aufmass-subtabs .tab {
    margin-bottom: -1px;
}
.project-aufmass-subtabs + .project-aufmass-embedded,
.project-aufmass-hub-head + .project-aufmass-subtabs + .project-aufmass-embedded {
    margin-top: 0;
    border-top-left-radius: 0;
    border-top-right-radius: 0;
    border-top: 0;
}
.project-aufmass-embedded .section-head {
    margin-bottom: 1rem;
}
.project-aufmass-embedded .section-head h2 {
    font-size: 1.05rem;
}
.project-aufmass-embedded .service-catalog-head {
    border-bottom: 1px solid var(--border-line);
}
.project-tab-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
}
.project-tab-head .intro-actions {
    margin: 0;
}
.hr-hub-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 0.85rem;
}
.hr-hub-card {
    display: grid;
    gap: 0.35rem;
    padding: 1rem 1.1rem;
    border: 1px solid var(--border-line);
    border-radius: 8px;
    background: var(--bg-base);
    color: inherit;
    text-decoration: none;
}
.hr-hub-card:hover {
    border-color: var(--border-line-strong);
    background: var(--bg-elevated);
}
.hr-tabs {
    margin-bottom: 1rem;
}
.hr-tabs-embed {
    flex-wrap: wrap;
}
.hr-portal-frame-wrap {
    padding: 0;
    overflow: hidden;
}
.hr-portal-frame {
    display: block;
    width: 100%;
    min-height: calc(100vh - 12rem);
    border: 0;
}
.hidden-form {
    display: none;
}
.aufmass-row-head {
    text-align: left;
    width: 130px;
    min-width: 130px;
}
.aufmass-cell-input {
    width: 100%;
    border: 0;
    background: transparent;
    color: inherit;
    font: inherit;
    text-align: center;
    padding: 4px 2px;
}
.aufmass-row-head .aufmass-cell-input {
    text-align: left;
}
.aufmass-summary-row th {
    text-align: left;
    background: var(--aufmass-cell-sum-bg);
    font-weight: 600;
}
.aufmass-summary-row td {
    background: var(--aufmass-cell-sum-td-bg);
}
.aufmass-sheet-footer {
    display: grid;
    grid-template-columns: 1fr 220px;
    gap: 16px;
    align-items: end;
}
.aufmass-legal {
    font-size: 0.68rem;
    line-height: 1.35;
    margin: 0;
    color: var(--aufmass-legal-text);
}
.aufmass-signatures {
    grid-column: 1 / -1;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
    margin-top: 8px;
}
.aufmass-signatures span {
    display: block;
    font-size: 0.72rem;
    margin-bottom: 4px;
}
.aufmass-sign-line {
    border-bottom: 1px solid var(--aufmass-sign-line);
    min-height: 28px;
}
.aufmass-totals-box {
    border: 1px solid var(--aufmass-grid-border);
    padding: 8px;
    font-size: 0.82rem;
}
.aufmass-totals-box div {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    padding: 4px 0;
    border-bottom: 1px solid var(--aufmass-paper-border);
}
.aufmass-totals-box div:last-child {
    border-bottom: 0;
    font-weight: 700;
}
.aufmass-admin-bar {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 10px;
    margin-bottom: 16px;
}
.aufmass-form-actions {
    margin-top: 16px;
    flex-wrap: wrap;
}

.aufmass-images-section {
    margin-top: 16px;
}
.aufmass-image-upload {
    margin-bottom: 20px;
}
.aufmass-image-upload-toggle {
    cursor: pointer;
    list-style: none;
    display: inline-flex;
    margin-bottom: 12px;
}
.aufmass-image-upload summary::-webkit-details-marker {
    display: none;
}
.aufmass-image-form {
    margin-top: 8px;
}
.sales-chain-item {
    margin-bottom: 16px;
    padding-bottom: 12px;
    border-bottom: 1px solid var(--border, rgba(255, 255, 255, 0.1));
}
.sales-chain-item:last-child {
    border-bottom: none;
}
.sales-chain-nested {
    margin-left: 16px;
}
.sales-chain-nested-2 {
    margin-left: 32px;
}

.aufmass-image-group {
    margin-top: 20px;
}
.aufmass-image-group h3 {
    margin: 0 0 10px;
    font-size: 1rem;
}
.aufmass-image-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
    gap: 12px;
}
.aufmass-image-card {
    border: 1px solid var(--border-line);
    border-radius: 8px;
    overflow: hidden;
    background: var(--bg-elevated);
}
.aufmass-image-card img {
    display: block;
    width: 100%;
    height: 140px;
    object-fit: cover;
}
.aufmass-image-meta {
    padding: 8px 10px;
    font-size: 0.78rem;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.aufmass-image-card form {
    padding: 0 10px 10px;
}

:root[data-theme="dark"] .aufmass-sheet {
    --aufmass-paper-bg: var(--bg-surface);
    --aufmass-paper-text: var(--text-primary);
    --aufmass-paper-border: var(--border-line-strong);
    --aufmass-head-border: var(--border-line-strong);
    --aufmass-cell-head-bg: var(--bg-elevated);
    --aufmass-cell-sum-bg: #2f3844;
    --aufmass-cell-sum-td-bg: #252b33;
    --aufmass-grid-border: var(--border-line);
    --aufmass-legal-text: var(--text-secondary);
    --aufmass-sign-line: var(--border-line-strong);
}
:root[data-theme="dark"] .aufmass-cell-input {
    color: var(--text-primary);
}
:root[data-theme="dark"] .aufmass-cell-input::placeholder {
    color: var(--text-muted);
}
:root[data-theme="dark"] .aufmass-type-option,
:root[data-theme="dark"] .aufmass-type-pill {
    color: var(--text-primary);
}
:root[data-theme="dark"] .aufmass-image-upload {
    border: 1px solid var(--border-line);
    border-radius: 8px;
    padding: 12px 14px;
    background: var(--bg-elevated);
}
:root[data-theme="dark"] .aufmass-image-upload-toggle {
    border: 1px solid var(--border-line);
    background: var(--bg-surface);
    color: var(--text-primary);
}
:root[data-theme="dark"] .aufmass-image-card {
    background: var(--bg-surface);
    border-color: var(--border-line-strong);
}
:root[data-theme="dark"] .aufmass-image-meta {
    color: var(--text-secondary);
}
:root[data-theme="dark"] .aufmass-image-meta span:last-child {
    color: var(--text-muted);
}

@media print {
    .app-header,
    .app-nav,
    .intro,
    .tabs,
    .aufmass-admin-bar,
    .aufmass-form-actions,
    .aufmass-images-section,
    .surface:not(.aufmass-editor-wrap),
    .flash,
    .footer {
        display: none !important;
    }
    .main {
        padding: 0 !important;
    }
    .aufmass-editor-wrap {
        border: 0;
        padding: 0;
        background: transparent;
    }
    .aufmass-sheet {
        --aufmass-paper-bg: #fff;
        --aufmass-paper-text: #111827;
        --aufmass-paper-border: #cbd5e1;
        --aufmass-head-border: #111827;
        --aufmass-cell-head-bg: #e5e7eb;
        --aufmass-cell-sum-bg: #f3f4f6;
        --aufmass-cell-sum-td-bg: #fafafa;
        --aufmass-grid-border: #94a3b8;
        --aufmass-legal-text: #374151;
        --aufmass-sign-line: #111827;
        border: 0;
        border-radius: 0;
        padding: 0;
        min-width: 0;
        background: #fff !important;
        color: #111827 !important;
    }
    .aufmass-logo-dark {
        display: none !important;
    }
    .aufmass-logo-light {
        display: block !important;
    }
}

@media (max-width: 900px) {
    .main { padding: 1rem; }
    .app-header-top { flex-wrap: wrap; padding: 0.7rem 1rem; }
    .global-search { order: 3; flex: 1 1 100%; max-width: none; }
    .app-nav { padding: 0 1rem 0.7rem; }
    .ticket-filter-tags-row { flex-direction: column; align-items: stretch; }
    .ticket-filter-tags { max-width: none; }
    .ticket-filter-main,
    .ticket-toolbar-actions,
    .ticket-filter-fields {
        grid-template-columns: 1fr;
        justify-content: stretch;
    }
    .service-catalog-grid,
    .service-add-item,
    .service-start-check,
    .service-check-item,
    .work-report-company-tag-picker {
        grid-template-columns: 1fr;
    }
    .service-level-2 {
        margin-left: 0.8rem;
    }
    .service-check-actions {
        justify-content: flex-start;
    }
    .ticket-toolbar-actions,
    .ticket-search-input {
        width: 100%;
        max-width: none;
    }
    .topbar, .search-form, .intro, .import-box, .import-box form { flex-direction: column; align-items: stretch; }
    .stats, .form-grid, .company-layout, .ticket-detail-grid, .ticket-flags, .person-detail-grid, .team-layout, .account-panel, .feedback-layout { grid-template-columns: 1fr; }
    .wide { grid-column: span 1; }
    .company-mini { min-width: 0; }
    .ticket-row, .ticket-row-meta { align-items: flex-start; flex-direction: column; }
    .compact-select { width: 100%; }
    .chat-thread { max-height: none; }
    .chat-bubble { width: 100%; }
    .chat-compose-actions { align-items: stretch; }
    .chat-file-picker,
    .chat-file-picker input { width: 100%; }
    .chat-attachments { grid-template-columns: 1fr; }
}

.project-health-dot {
    display: inline-block;
    width: 0.75rem;
    height: 0.75rem;
    margin-right: 0.35rem;
    border-radius: 50%;
    vertical-align: middle;
}
.project-health-dot.health-green { background: #16a34a; box-shadow: 0 0 0 2px rgba(22, 163, 74, 0.25); }
.project-health-dot.health-yellow { background: #ca8a04; box-shadow: 0 0 0 2px rgba(202, 138, 4, 0.25); }
.project-health-dot.health-red { background: #dc2626; box-shadow: 0 0 0 2px rgba(220, 38, 38, 0.25); }

.project-detail-intro > div:first-child { min-width: 0; flex: 1 1 auto; }
.project-workflow-rail { width: min(100%, 760px); margin-top: 1.15rem; }
.project-workflow-rail ol { display: flex; align-items: flex-start; margin: 0; padding: 0; list-style: none; }
.project-workflow-rail li { position: relative; display: grid; min-width: 0; flex: 1 1 0; justify-items: center; text-align: center; }
.project-workflow-rail li:not(:last-child)::after { content: ""; position: absolute; top: 0.55rem; left: calc(50% + 0.75rem); width: calc(100% - 1.5rem); height: 2px; background: var(--border-line-strong); }
.project-workflow-form { width: 100%; margin: 0; }
.project-workflow-action {
    --project-status-border: oklch(42% 0.015 265);
    --project-status-bg: oklch(30% 0.015 265);
    --project-status-text: oklch(82% 0.012 265);
    position: relative;
    display: grid;
    width: 100%;
    justify-items: center;
    gap: 0.42rem;
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--text-muted);
    font: inherit;
    text-align: center;
    cursor: pointer;
    transition: color 150ms ease;
}
.project-workflow-action:hover:not(:disabled) { color: var(--project-status-text); }
.project-workflow-action:focus-visible { outline: 2px solid var(--accent); outline-offset: 4px; border-radius: 4px; }
.project-workflow-action:disabled { cursor: default; }
.project-workflow-dot { position: relative; z-index: 1; display: grid; width: 1.15rem; height: 1.15rem; place-items: center; border: 2px solid var(--border-line-strong); border-radius: 50%; background: var(--bg-base); transition: border-color 150ms ease, background-color 150ms ease, box-shadow 150ms ease; }
.project-workflow-dot .ui-icon { width: 0.66rem; height: 0.66rem; stroke-width: 3; }
.project-workflow-label { max-width: 8.5rem; font-size: 0.66rem; font-weight: 650; line-height: 1.25; }
.project-workflow-action:hover:not(:disabled) .project-workflow-dot { border-color: var(--project-status-border); }
.project-workflow-rail li.is-complete::after { background: #22c55e; }
.project-workflow-rail li.is-complete .project-workflow-action { color: oklch(82% 0.13 150); }
.project-workflow-rail li.is-complete .project-workflow-dot { border-color: oklch(62% 0.16 150); background: oklch(38% 0.11 150); color: oklch(94% 0.04 150); }
.project-workflow-rail li.is-current .project-workflow-action { color: var(--project-status-text); }
.project-workflow-rail li.is-current .project-workflow-dot { border-color: var(--project-status-border); background: var(--project-status-border); box-shadow: 0 0 0 4px color-mix(in srgb, var(--project-status-border) 24%, transparent); }
:root[data-theme="light"] .project-workflow-action {
    --project-status-border: oklch(76% 0.018 265);
    --project-status-bg: oklch(95% 0.01 265);
    --project-status-text: oklch(36% 0.025 265);
}
:root[data-theme="light"] .project-workflow-rail li.is-complete .project-workflow-action { color: oklch(39% 0.13 150); }
:root[data-theme="light"] .project-workflow-rail li.is-complete .project-workflow-dot { border-color: oklch(52% 0.15 150); background: oklch(56% 0.14 150); color: #fff; }

.project-toolbar {
    padding: 1rem;
    border-bottom: 1px solid var(--border-line);
}
.project-list-summary {
    display: flex;
    align-items: stretch;
    gap: 0;
    border-bottom: 1px solid var(--border-line);
    background: var(--bg-base);
}
.project-list-summary > div {
    display: flex;
    min-width: 0;
    align-items: baseline;
    gap: 0.45rem;
    padding: 0.75rem 1rem;
    border-right: 1px solid var(--border-line);
}
.project-list-summary > div:last-child { border-right: 0; }
.project-list-summary strong { color: var(--text-primary); font-size: 1rem; font-variant-numeric: tabular-nums; }
.project-list-summary span { color: var(--text-secondary); font-size: 0.76rem; }
.project-list-summary .has-attention strong,
.project-list-summary .has-attention span { color: #f59e0b; }
.project-customer-list { display: grid; gap: 0.75rem; padding: 1rem; }
.project-customer-group {
    overflow: hidden;
    border: 1px solid var(--border-line);
    border-radius: 9px;
    background: var(--bg-base);
}
.project-customer-group > summary {
    position: relative;
    display: flex;
    min-height: 52px;
    align-items: center;
    gap: 0.65rem;
    padding: 0.75rem 0.9rem;
    cursor: pointer;
    list-style: none;
    background: var(--bg-elevated);
    transition: background-color 160ms ease;
}
.project-customer-group > summary::-webkit-details-marker { display: none; }
.project-customer-group > summary:hover { background: color-mix(in srgb, var(--accent) 5%, var(--bg-elevated)); }
.project-customer-group > summary:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
.project-customer-chevron {
    display: grid;
    width: 24px;
    height: 24px;
    flex: 0 0 24px;
    place-items: center;
    color: var(--text-secondary);
    transition: transform 180ms cubic-bezier(0.22, 1, 0.36, 1);
}
.project-customer-chevron .ui-icon { width: 17px; height: 17px; }
.project-customer-group:not([open]) .project-customer-chevron { transform: rotate(-90deg); }
.project-customer-name {
    min-width: 0;
    overflow: hidden;
    color: var(--text-primary);
    font-size: 0.9rem;
    font-weight: 750;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.project-customer-meta { color: var(--text-secondary); font-size: 0.74rem; }
.project-customer-attention {
    margin-left: auto;
    padding: 0.2rem 0.5rem;
    border-radius: 999px;
    background: color-mix(in srgb, #f59e0b 13%, transparent);
    color: #f59e0b;
    font-size: 0.7rem;
    font-weight: 750;
}
.project-compact-list { border-top: 1px solid var(--border-line); }
.project-compact-row {
    display: grid;
    min-width: 0;
    min-height: 72px;
    grid-template-columns: 26px minmax(190px, 1.6fr) minmax(130px, 1fr) minmax(125px, 0.9fr) minmax(120px, 0.8fr) auto 28px 30px;
    align-items: center;
    gap: 0.75rem;
    padding: 0.65rem 0.85rem;
    border-bottom: 1px solid var(--border-line);
    color: inherit;
    transition: background-color 150ms ease;
}
.project-compact-row:last-child { border-bottom: 0; }
.project-compact-row:hover { background: color-mix(in srgb, var(--accent) 5%, var(--bg-base)); }
.project-compact-row:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
.project-compact-health { grid-column: 1; overflow: hidden; font-size: 0; white-space: nowrap; }
.project-compact-health .project-health-dot { margin: 0; vertical-align: middle; }
.project-compact-primary,
.project-compact-object,
.project-compact-period,
.project-compact-owner {
    display: grid;
    min-width: 0;
    gap: 0.18rem;
}
.project-compact-primary { grid-column: 2; }
.project-compact-object { grid-column: 3; }
.project-compact-period { grid-column: 4; }
.project-compact-owner { grid-column: 5; }
.project-compact-primary small,
.project-compact-object small,
.project-compact-period small,
.project-compact-owner small {
    overflow: hidden;
    color: var(--text-muted);
    font-size: 0.67rem;
    line-height: 1.2;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.project-compact-primary strong,
.project-compact-object strong,
.project-compact-period strong,
.project-compact-owner strong {
    overflow: hidden;
    color: var(--text-primary);
    font-size: 0.79rem;
    line-height: 1.3;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.project-compact-primary small { color: var(--text-secondary); font-family: "Cascadia Mono", Consolas, monospace; }
.project-compact-primary strong { font-size: 0.86rem; }
.project-compact-status {
    --project-status-border: oklch(42% 0.015 265);
    --project-status-bg: oklch(30% 0.015 265);
    --project-status-text: oklch(82% 0.012 265);
    grid-column: 6;
    padding: 0.24rem 0.55rem;
    border: 1px solid var(--project-status-border);
    border-radius: 999px;
    background: var(--project-status-bg);
    color: var(--project-status-text);
    font-size: 0.68rem;
    font-weight: 700;
    white-space: nowrap;
}
.project-compact-status--documenting,
.project-compact-status--ready_for_quote,
.project-compact-status--confirmed {
    --project-status-border: oklch(47% 0.09 250);
    --project-status-bg: oklch(28% 0.055 250);
    --project-status-text: oklch(84% 0.065 250);
}
.project-compact-status--quoted {
    --project-status-border: oklch(52% 0.115 75);
    --project-status-bg: oklch(30% 0.06 75);
    --project-status-text: oklch(87% 0.105 80);
}
.project-compact-status--invoiced,
.project-compact-status--closed {
    --project-status-border: oklch(49% 0.105 150);
    --project-status-bg: oklch(28% 0.06 150);
    --project-status-text: oklch(85% 0.09 150);
}
.project-compact-status--closed {
    --project-status-border: oklch(55% 0.135 145);
    --project-status-bg: oklch(31% 0.075 145);
    --project-status-text: oklch(89% 0.105 145);
}
:root[data-theme="light"] .project-compact-status {
    --project-status-border: oklch(76% 0.018 265);
    --project-status-bg: oklch(95% 0.01 265);
    --project-status-text: oklch(36% 0.025 265);
}
:root[data-theme="light"] .project-compact-status--documenting,
:root[data-theme="light"] .project-compact-status--ready_for_quote,
:root[data-theme="light"] .project-compact-status--confirmed {
    --project-status-border: oklch(73% 0.085 250);
    --project-status-bg: oklch(95% 0.025 250);
    --project-status-text: oklch(38% 0.11 250);
}
:root[data-theme="light"] .project-compact-status--quoted {
    --project-status-border: oklch(75% 0.12 75);
    --project-status-bg: oklch(96% 0.045 80);
    --project-status-text: oklch(39% 0.105 70);
}
:root[data-theme="light"] .project-compact-status--invoiced,
:root[data-theme="light"] .project-compact-status--closed {
    --project-status-border: oklch(71% 0.105 150);
    --project-status-bg: oklch(95% 0.04 150);
    --project-status-text: oklch(35% 0.11 150);
}
:root[data-theme="light"] .project-compact-status--closed {
    --project-status-border: oklch(64% 0.14 145);
    --project-status-bg: oklch(92% 0.055 145);
    --project-status-text: oklch(31% 0.13 145);
}
.project-compact-chat {
    display: grid;
    width: 24px;
    height: 24px;
    grid-column: 7;
    place-items: center;
    border-radius: 999px;
    background: var(--accent);
    color: #fff;
    font-size: 0.62rem;
    font-weight: 800;
}
.project-compact-open { display: grid; grid-column: 8; place-items: center; color: var(--text-secondary); }
.project-compact-open .ui-icon { width: 18px; height: 18px; }
.project-compact-row:hover .project-compact-open { color: var(--accent); transform: translateX(2px); }
.project-card-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 290px), 1fr));
    gap: 1rem;
    padding: 1rem;
}
.project-card {
    position: relative;
    display: flex;
    min-width: 0;
    min-height: 230px;
    flex-direction: column;
    padding: 1.15rem;
    border: 1px solid rgba(249, 115, 22, 0.34);
    border-radius: 14px;
    background: #342116;
    color: #fff7ed;
    cursor: pointer;
    box-shadow: 0 10px 30px rgba(7, 4, 2, 0.18);
    transition: transform 180ms cubic-bezier(0.22, 1, 0.36, 1), border-color 180ms ease, box-shadow 180ms ease;
}
.project-card--tone-2 { background: #302016; }
.project-card--tone-3 { background: #2c1d15; }
.project-card--tone-4 { background: #291b14; }
.project-card--tone-5 { background: #251913; }
.project-card--tone-6 { background: #211611; }
.project-card:hover,
.project-card:focus-within {
    transform: translateY(-2px);
    border-color: rgba(251, 146, 60, 0.7);
    box-shadow: 0 16px 40px rgba(7, 4, 2, 0.3);
}
.project-card-topline {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.55rem;
    min-height: 1.5rem;
}
.project-card-number {
    color: #fdba74;
    font-family: "Cascadia Mono", "Consolas", monospace;
    font-size: 0.76rem;
    font-weight: 700;
}
.project-card-health {
    margin-left: auto;
    color: #ffedd5;
    font-size: 0.76rem;
}
.project-card-chat-badge {
    display: inline-flex;
    align-items: center;
    min-height: 1.35rem;
    padding: 0.15rem 0.45rem;
    border-radius: 999px;
    background: #f97316;
    color: #1f130b;
    font-size: 0.68rem;
    font-weight: 800;
}
.project-card-title {
    margin: 1.15rem 0 1rem;
    color: #fffaf5;
    font-size: 1.12rem;
    line-height: 1.3;
    text-wrap: balance;
}
.project-card-details {
    display: grid;
    gap: 0.65rem;
    margin: 0;
}
.project-card-details div {
    display: grid;
    grid-template-columns: 4.25rem minmax(0, 1fr);
    gap: 0.55rem;
}
.project-card-details dt {
    color: #d8a574;
    font-size: 0.74rem;
}
.project-card-details dd {
    min-width: 0;
    margin: 0;
    overflow-wrap: anywhere;
    color: #ffedd5;
    font-size: 0.82rem;
}
.project-card-footer {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 1rem;
    margin-top: auto;
    padding-top: 1.2rem;
}
.project-card-status {
    display: inline-flex;
    align-items: center;
    min-height: 1.6rem;
    padding: 0.25rem 0.6rem;
    border: 1px solid rgba(253, 186, 116, 0.28);
    border-radius: 999px;
    background: rgba(67, 30, 10, 0.36);
    color: #fed7aa;
    font-size: 0.72rem;
    font-weight: 650;
}
.project-card-open {
    display: grid;
    width: 42px;
    height: 42px;
    flex: 0 0 42px;
    place-items: center;
    border-radius: 50%;
    background: #f97316;
    color: #1f130b;
    box-shadow: 0 8px 20px rgba(249, 115, 22, 0.22);
    transition: background-color 160ms ease, transform 160ms cubic-bezier(0.22, 1, 0.36, 1);
}
.project-card-open:hover {
    transform: translateX(2px);
    background: #fb923c;
}
.project-card-open:focus-visible {
    outline: 3px solid #fff7ed;
    outline-offset: 3px;
}
.project-card-open .ui-icon {
    width: 20px;
    height: 20px;
}
.project-card-open::after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
}
:root[data-theme="light"] .project-card { background: #fff2e8; color: #431407; border-color: #fdba74; box-shadow: 0 10px 28px rgba(124, 45, 18, 0.1); }
:root[data-theme="light"] .project-card--tone-2 { background: #fcebdc; }
:root[data-theme="light"] .project-card--tone-3 { background: #f7e4d5; }
:root[data-theme="light"] .project-card--tone-4 { background: #f2ddcd; }
:root[data-theme="light"] .project-card--tone-5 { background: #ecd5c4; }
:root[data-theme="light"] .project-card--tone-6 { background: #e5cdbb; }
:root[data-theme="light"] .project-card-number,
:root[data-theme="light"] .project-card-details dt { color: #9a3412; }
:root[data-theme="light"] .project-card-title,
:root[data-theme="light"] .project-card-details dd,
:root[data-theme="light"] .project-card-health { color: #431407; }
:root[data-theme="light"] .project-card-status { background: rgba(255, 247, 237, 0.62); border-color: rgba(154, 52, 18, 0.28); color: #7c2d12; }

.project-section-hub {
    margin-bottom: 1.25rem;
}
.project-section-hub-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1rem;
}
.project-section-hub-head h2 {
    margin: 0 0 0.25rem;
    font-size: 1.2rem;
}
.project-section-hub-head p {
    margin: 0;
    color: var(--text-secondary);
}
.project-section-grid {
    display: grid;
    grid-template-columns: repeat(12, minmax(0, 1fr));
    grid-auto-flow: dense;
    gap: 0.85rem;
}
.project-section-tile {
    position: relative;
    display: flex;
    min-width: 0;
    min-height: 165px;
    grid-column: span 3;
    flex-direction: column;
    padding: 1rem;
    overflow: hidden;
    border: 1px solid rgba(255, 255, 255, 0.16);
    border-radius: 14px;
    background: #30333a;
    color: #f8fafc;
    box-shadow: 0 12px 30px rgba(0, 0, 0, 0.16);
    transition: transform 180ms cubic-bezier(0.22, 1, 0.36, 1), border-color 180ms ease, box-shadow 180ms ease;
}
.project-section-tile:hover,
.project-section-tile:focus-visible {
    transform: translateY(-3px);
    border-color: rgba(255, 255, 255, 0.42);
    color: #fff;
    box-shadow: 0 18px 42px rgba(0, 0, 0, 0.26);
}
.project-section-tile:focus-visible {
    outline: 3px solid var(--accent);
    outline-offset: 3px;
}
.project-section-tile--overview,
.project-section-tile--angebot {
    min-height: 235px;
    grid-column: span 6;
}
.project-section-tile--overview { background: #26354a; }
.project-section-tile--timeline { background: #37305c; }
.project-section-tile--termine { background: #283765; }
.project-section-tile--chat { background: #16413d; }
.project-section-tile--before { background: #453052; }
.project-section-tile--after { background: #214632; }
.project-section-tile--document { background: #343842; }
.project-section-tile--aufmass { background: #514016; }
.project-section-tile--bautagebuch { background: #29422f; }
.project-section-tile--angebot { background: #542713; }
.project-section-tile--rechnung { background: #3d2b52; }
.project-section-icon {
    display: grid;
    width: 42px;
    height: 42px;
    place-items: center;
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.12);
    color: #fff;
}
.project-section-icon .ui-icon {
    width: 22px;
    height: 22px;
}
.project-section-copy {
    display: grid;
    gap: 0.35rem;
    margin-top: 1rem;
    padding-right: 2.4rem;
}
.project-section-copy strong {
    font-size: 1.05rem;
    line-height: 1.2;
}
.project-section-tile--overview .project-section-copy strong,
.project-section-tile--angebot .project-section-copy strong {
    font-size: 1.28rem;
}
.project-section-copy > span {
    max-width: 36ch;
    color: rgba(255, 255, 255, 0.79);
    font-size: 0.8rem;
    line-height: 1.45;
    text-wrap: pretty;
}
.project-section-meta {
    align-self: flex-start;
    margin-top: auto;
    padding-top: 1rem;
    color: rgba(255, 255, 255, 0.72);
    font-size: 0.72rem;
    font-weight: 650;
}
.project-section-arrow {
    position: absolute;
    right: 1rem;
    bottom: 1rem;
    display: grid;
    width: 34px;
    height: 34px;
    place-items: center;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.14);
}
.project-section-arrow .ui-icon {
    width: 17px;
    height: 17px;
}
.project-detail-home-tab {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
}
.project-detail-home-tab .ui-icon {
    width: 16px;
    height: 16px;
}

.project-timeline-surface {
    padding: clamp(1rem, 2.4vw, 1.75rem);
}
.project-timeline-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1.5rem;
    padding-bottom: 1.25rem;
    border-bottom: 1px solid var(--border-line);
}
.project-timeline-head h2 {
    margin: 0 0 0.3rem;
    font-size: 1.25rem;
    text-wrap: balance;
}
.project-timeline-head p {
    max-width: 65ch;
    margin: 0;
    color: var(--text-secondary);
    text-wrap: pretty;
}
.project-timeline-summary {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 0.45rem;
}
.project-timeline-summary span {
    padding: 0.42rem 0.62rem;
    border: 1px solid var(--border-line);
    border-radius: 999px;
    background: var(--bg-elevated);
    color: var(--text-secondary);
    font-size: 0.76rem;
    white-space: nowrap;
}
.project-timeline-summary strong { color: var(--text-primary); }
.project-timeline-list {
    display: grid;
    margin: 0;
    padding: 1.25rem 0 0;
    list-style: none;
}
.project-timeline-event {
    display: grid;
    grid-template-columns: minmax(7.5rem, 9rem) 1.5rem minmax(0, 1fr);
    min-height: 6.5rem;
}
.project-timeline-date {
    padding: 0.15rem 1rem 1.35rem 0;
    color: var(--text-secondary);
    font-size: 0.76rem;
    font-weight: 700;
    text-align: right;
}
.project-timeline-event.is-today .project-timeline-date { color: var(--accent); }
.project-timeline-marker {
    position: relative;
    display: block;
}
.project-timeline-marker::before {
    content: "";
    position: absolute;
    z-index: 1;
    top: 0.2rem;
    left: 50%;
    width: 0.72rem;
    height: 0.72rem;
    transform: translateX(-50%);
    border: 2px solid var(--bg-surface);
    border-radius: 50%;
    background: #818cf8;
    box-shadow: 0 0 0 2px #818cf8;
}
.project-timeline-marker::after {
    content: "";
    position: absolute;
    top: 1rem;
    bottom: 0;
    left: 50%;
    width: 2px;
    transform: translateX(-50%);
    background: var(--border-line-strong);
}
.project-timeline-event:last-child .project-timeline-marker::after { display: none; }
.project-timeline-event--project .project-timeline-marker::before { background: var(--accent); box-shadow: 0 0 0 2px var(--accent); }
.project-timeline-event--status .project-timeline-marker::before { background: #38bdf8; box-shadow: 0 0 0 2px #38bdf8; }
.project-timeline-event--milestone .project-timeline-marker::before { background: #fbbf24; box-shadow: 0 0 0 2px #fbbf24; }
.project-timeline-event--task .project-timeline-marker::before { background: #a78bfa; box-shadow: 0 0 0 2px #a78bfa; }
.project-timeline-event--appointment .project-timeline-marker::before { background: #34d399; box-shadow: 0 0 0 2px #34d399; }
.project-timeline-event.is-past:not(.is-today) .project-timeline-marker::before {
    filter: saturate(0.45);
    opacity: 0.7;
}
.project-timeline-event.is-undated .project-timeline-marker::before {
    background: var(--text-muted);
    box-shadow: 0 0 0 2px var(--text-muted);
}
.project-timeline-content {
    min-width: 0;
    margin: 0 0 1.35rem 0.75rem;
    padding: 0 0 1.1rem;
    border-bottom: 1px solid var(--border-line);
}
.project-timeline-event:last-child .project-timeline-content { border-bottom: 0; }
.project-timeline-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem 0.75rem;
    margin-bottom: 0.3rem;
    color: var(--text-secondary);
    font-size: 0.7rem;
    font-weight: 700;
}
.project-timeline-meta span { color: var(--accent); }
.project-timeline-content h3 {
    margin: 0;
    font-size: 0.98rem;
    line-height: 1.35;
    text-wrap: pretty;
}
.project-timeline-content h3 a { color: inherit; }
.project-timeline-content h3 a:hover { color: var(--accent); }
.project-timeline-content p {
    margin: 0.3rem 0 0;
    color: var(--text-secondary);
    font-size: 0.8rem;
    line-height: 1.45;
}

@media (max-width: 1100px) {
    .project-section-tile,
    .project-section-tile--overview,
    .project-section-tile--angebot { grid-column: span 6; min-height: 185px; }
}
@media (max-width: 700px) {
    .project-workflow-rail { overflow-x: auto; padding: 0.25rem 0 0.5rem; scrollbar-width: thin; }
    .project-workflow-rail ol { min-width: 660px; }
    .project-section-hub-head { align-items: stretch; flex-direction: column; }
    .project-section-hub-head .btn { align-self: flex-start; }
    .project-section-tile,
    .project-section-tile--overview,
    .project-section-tile--angebot { grid-column: 1 / -1; min-height: 160px; }
    .project-timeline-head { flex-direction: column; gap: 0.85rem; }
    .project-timeline-summary { justify-content: flex-start; }
    .project-timeline-event { grid-template-columns: 1.25rem minmax(0, 1fr); min-height: 5.75rem; }
    .project-timeline-date {
        grid-column: 2;
        padding: 0 0 0.4rem 0.65rem;
        text-align: left;
    }
    .project-timeline-marker { grid-column: 1; grid-row: 1 / span 2; }
    .project-timeline-content { grid-column: 2; margin-left: 0.65rem; }
}

@media (max-width: 1050px) {
    .project-compact-row { grid-template-columns: 26px minmax(190px, 1.6fr) minmax(130px, 1fr) minmax(125px, 0.9fr) auto 28px 30px; }
    .project-compact-owner { display: none; }
    .project-compact-status { grid-column: 5; }
    .project-compact-chat { grid-column: 6; }
    .project-compact-open { grid-column: 7; }
}
@media (max-width: 680px) {
    .project-list-summary { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .project-list-summary > div {
        display: grid;
        justify-items: center;
        gap: 0.15rem;
        padding: 0.65rem 0.35rem;
        text-align: center;
    }
    .project-list-summary span { font-size: 0.66rem; }
    .project-customer-list { gap: 0.65rem; padding: 0.75rem; }
    .project-customer-group > summary {
        display: grid;
        min-height: 64px;
        grid-template-columns: 24px minmax(0, 1fr) auto;
        grid-template-rows: auto auto;
        gap: 0.25rem 0.55rem;
    }
    .project-customer-chevron { grid-column: 1; grid-row: 1; }
    .project-customer-name { grid-column: 2; grid-row: 1; }
    .project-customer-meta { grid-column: 2 / 4; grid-row: 2; }
    .project-customer-attention { grid-column: 3; grid-row: 1; margin-left: 0; }
    .project-compact-row {
        min-height: 108px;
        grid-template-columns: 20px minmax(0, 1fr) auto;
        grid-template-rows: auto auto auto;
        gap: 0.35rem 0.55rem;
        padding: 0.75rem;
    }
    .project-compact-health { grid-column: 1; grid-row: 1; }
    .project-compact-primary { grid-column: 2; grid-row: 1; }
    .project-compact-status { grid-column: 3; grid-row: 1; align-self: start; }
    .project-compact-object { grid-column: 2; grid-row: 2; }
    .project-compact-period { grid-column: 2; grid-row: 3; }
    .project-compact-owner { display: none; }
    .project-compact-chat { grid-column: 3; grid-row: 2; justify-self: end; }
    .project-compact-open { grid-column: 3; grid-row: 3; justify-self: end; }
    .project-card-grid { grid-template-columns: 1fr; padding: 0.75rem; }
    .project-card { min-height: 210px; }
}
@media (prefers-reduced-motion: reduce) {
    .project-customer-chevron,
    .project-compact-row,
    .project-customer-group > summary { transition: none; }
    .project-compact-row:hover .project-compact-open { transform: none; }
    .project-card,
    .project-card-open,
    .project-section-tile { transition: none; }
    .project-card:hover,
    .project-card:focus-within,
    .project-card-open:hover,
    .project-section-tile:hover,
    .project-section-tile:focus-visible { transform: none; }
}

.integration-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 1rem;
}
.integration-card {
    display: flex;
    flex-direction: column;
    gap: 0.65rem;
    padding: 1rem;
    border: 1px solid var(--border-line);
    border-radius: 10px;
    background: var(--bg-base);
}
.integration-card-head h3 {
    margin: 0.25rem 0 0;
    font-size: 1rem;
}
.integration-category {
    color: var(--text-muted);
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}
.integration-card-meta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    margin-top: auto;
}
.integration-form-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px solid var(--border-line);
}
.badge-success { background: rgba(22, 163, 74, 0.15); color: #16a34a; }
.badge-danger { background: rgba(220, 38, 38, 0.15); color: #dc2626; }
.badge-muted { background: var(--bg-elevated); color: var(--text-muted); }
.btn-sm { padding: 0.35rem 0.65rem; font-size: 0.82rem; }

.desktop-only { display: block; }
.mobile-only { display: none; }

.mobile-bottom-nav {
    display: none;
}

@media (max-width: 760px) {
    .desktop-only { display: none !important; }
    .mobile-only { display: block; }

    .app-nav { display: none; }
    .has-mobile-nav .main {
        padding-bottom: calc(4.75rem + env(safe-area-inset-bottom, 0px));
    }
    .has-mobile-nav .footer {
        margin-bottom: calc(3.5rem + env(safe-area-inset-bottom, 0px));
    }

    .mobile-bottom-nav {
        position: fixed;
        right: 0;
        bottom: 0;
        left: 0;
        z-index: 80;
        display: flex;
        gap: 0;
        padding: 0.35rem 0.25rem calc(0.35rem + env(safe-area-inset-bottom, 0px));
        border-top: 1px solid var(--border-line);
        background: color-mix(in srgb, var(--bg-surface) 92%, transparent);
        backdrop-filter: blur(10px);
    }
    .mobile-bottom-nav-item {
        display: flex;
        flex: 1 1 0;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        gap: 0.15rem;
        min-height: 3.25rem;
        padding: 0.25rem 0.15rem;
        border-radius: 10px;
        color: var(--text-muted);
        font-size: 0.62rem;
        font-weight: 600;
        text-decoration: none;
    }
    .mobile-bottom-nav-item.active {
        background: var(--accent-soft);
        color: var(--text-primary);
    }
    .mobile-bottom-nav-icon {
        position: relative;
        font-size: 1.05rem;
        line-height: 1;
    }
    .mobile-bottom-nav-badge {
        position: absolute;
        top: -0.35rem;
        right: -0.55rem;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-width: 15px;
        height: 15px;
        padding: 0 0.2rem;
        border-radius: 999px;
        background: var(--accent);
        color: #fff;
        font-size: 0.55rem;
        font-weight: 800;
        line-height: 1;
    }

    .project-toolbar {
        flex-direction: column;
        align-items: stretch;
    }
    .project-search {
        width: 100%;
    }

    .mobile-project-list {
        display: flex;
        flex-direction: column;
        gap: 0.75rem;
        margin-top: 1rem;
    }
    .mobile-project-card {
        display: block;
        padding: 0.9rem 1rem;
        border: 1px solid var(--border-line);
        border-radius: 12px;
        background: var(--bg-base);
        color: inherit;
        text-decoration: none;
    }
    .mobile-project-card:active {
        background: var(--bg-elevated);
    }
    .mobile-project-card-top {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 0.5rem;
        margin-bottom: 0.35rem;
    }
    .mobile-project-number {
        color: var(--text-muted);
        font-size: 0.72rem;
        font-family: ui-monospace, monospace;
    }
    .mobile-project-title {
        margin: 0 0 0.35rem;
        font-size: 1rem;
        line-height: 1.25;
    }
    .mobile-project-meta {
        margin: 0 0 0.5rem;
        color: var(--text-muted);
        font-size: 0.82rem;
    }
    .mobile-project-status {
        display: inline-flex;
        padding: 0.15rem 0.45rem;
        border-radius: 999px;
        background: var(--bg-elevated);
        color: var(--text-secondary);
        font-size: 0.72rem;
    }

    .project-detail-intro h1 {
        font-size: 1.35rem;
    }
    .project-comms-bar {
        display: grid;
    }
    .mobile-project-quick {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 0.5rem;
        margin-bottom: 0.75rem;
    }
    .mobile-project-quick .btn-ghost {
        grid-column: 1 / -1;
    }
    .project-detail-tabs {
        display: flex;
        flex-wrap: nowrap;
        gap: 0.35rem;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        padding-bottom: 0.25rem;
        scrollbar-width: none;
    }
    .project-detail-tabs::-webkit-scrollbar {
        display: none;
    }
    .project-detail-tabs .tab {
        flex: 0 0 auto;
        white-space: nowrap;
    }
    .project-aufmass-subtabs {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        flex-wrap: nowrap;
        scrollbar-width: none;
    }
    .project-aufmass-subtabs::-webkit-scrollbar {
        display: none;
    }
    .project-aufmass-subtabs .tab {
        flex: 0 0 auto;
        white-space: nowrap;
    }

    .project-upload-form {
        padding: 0.85rem;
        border: 1px dashed var(--border-line-strong);
        border-radius: 12px;
        background: var(--bg-base);
    }
    .project-upload-label span {
        display: block;
        margin-bottom: 0.5rem;
        font-weight: 600;
    }
    .project-upload-input {
        width: 100%;
        min-height: 2.75rem;
    }
    .project-upload-btn {
        width: 100%;
    }
    .project-media-grid {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 0.75rem;
        margin-top: 1rem;
    }
    .project-media-card {
        padding: 0.5rem;
        border: 1px solid var(--border-line);
        border-radius: 10px;
        background: var(--bg-base);
    }
    .project-media-thumb,
    .project-media-video,
    .project-media-doc {
        width: 100%;
        height: 7.5rem;
        border-radius: 8px;
        object-fit: cover;
        background: var(--bg-elevated);
    }
    .project-media-doc {
        display: grid;
        place-items: center;
    }
    .project-media-doc--pdf {
        border: 1px solid var(--border-line);
        padding: 0;
        cursor: pointer;
        color: #f87171;
        font-size: 0.82rem;
        font-weight: 700;
        letter-spacing: 0.04em;
    }
    .project-pdf-viewer {
        margin-top: 0.5rem;
    }
    .project-media-card--pdf {
        grid-column: 1 / -1;
    }
    .project-media-name {
        margin-top: 0.45rem;
        font-size: 0.72rem;
        word-break: break-word;
    }
    .project-media-actions {
        display: flex;
        flex-wrap: wrap;
        gap: 0.35rem;
        margin-top: 0.45rem;
    }
    .project-overview-section .info-list div {
        padding: 0.55rem 0;
    }
}

@media (min-width: 761px) {
    .project-media-grid {
        display: grid;
        grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
        gap: 12px;
        margin-top: 16px;
    }
    .project-media-card {
        padding: 10px;
        border: 1px solid var(--border-line);
        border-radius: 10px;
        background: var(--bg-base);
    }
    .project-media-thumb,
    .project-media-video {
        width: 100%;
        height: 120px;
        object-fit: cover;
        border-radius: 8px;
    }
    .project-media-doc {
        display: grid;
        place-items: center;
        height: 120px;
        border-radius: 8px;
        background: var(--bg-elevated);
    }
    .project-media-doc--pdf {
        border: 1px solid var(--border-line);
        padding: 0;
        cursor: pointer;
        color: #f87171;
        font-size: 0.82rem;
        font-weight: 700;
        letter-spacing: 0.04em;
    }
    :root[data-theme="light"] .project-media-doc--pdf {
        color: #b91c1c;
    }
    .project-pdf-viewer {
        margin-top: 0.5rem;
    }
    .project-media-card--pdf {
        grid-column: 1 / -1;
    }
    .project-media-name {
        margin-top: 8px;
        font-size: 12px;
    }
    .project-media-actions {
        display: flex;
        gap: 8px;
        margin-top: 8px;
    }
}

.dashboard-intro-modern {
    align-items: flex-start;
}
.dashboard-intro-actions {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 0.85rem;
}
.dashboard-widget-grid {
    display: grid;
    grid-template-columns: repeat(12, minmax(0, 1fr));
    gap: 1rem;
}
.dashboard-widget {
    min-width: 0;
}
.dashboard-widget--span-3 { grid-column: span 3; }
.dashboard-widget--span-4 { grid-column: span 4; }
.dashboard-widget--span-6 { grid-column: span 6; }
.dashboard-widget--span-8 { grid-column: span 8; }
.dashboard-widget--span-12 { grid-column: span 12; }
.dashboard-widget-inner {
    height: 100%;
    padding: 1rem;
}
.dashboard-widget-head,
.dashboard-widget-subhead {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    margin-bottom: 0.85rem;
}
.dashboard-widget-head h2,
.dashboard-widget-subhead h3 {
    margin: 0;
    font-size: 1rem;
}
.dashboard-widget-stat {
    display: flex;
    align-items: center;
    gap: 0.85rem;
    min-height: 88px;
}
.dashboard-widget-stat-copy strong {
    display: block;
    font-size: 1.8rem;
    line-height: 1.1;
}
.dashboard-project-list,
.dashboard-milestone-list {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}
.dashboard-milestone-item {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 0.25rem 0.5rem;
    padding: 0.65rem 0.75rem;
    border-radius: 8px;
    text-decoration: none;
    border: 1px solid var(--border-line);
    background: var(--bg-elevated);
}
.dashboard-milestone-item:hover {
    border-color: color-mix(in srgb, var(--accent, #6366f1) 35%, var(--border-line));
}
.dashboard-milestone-title {
    font-weight: 600;
    grid-column: 2;
}
.dashboard-milestone-project,
.dashboard-milestone-due {
    grid-column: 2;
    font-size: 0.85rem;
}
.milestone-status-badge.milestone-status-planning,
.badge.milestone-status-planning {
    background: color-mix(in srgb, #ea580c 18%, transparent);
    color: #ea580c;
}
.milestone-status-badge.milestone-status-active,
.badge.milestone-status-active {
    background: color-mix(in srgb, #2563eb 18%, transparent);
    color: #2563eb;
}
.milestone-status-badge.milestone-status-done,
.badge.milestone-status-done {
    background: color-mix(in srgb, #16a34a 18%, transparent);
    color: #16a34a;
}
.project-milestone-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}
.project-milestone-item {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
}
.project-milestone-table .field-input {
    min-width: 0;
}
.dashboard-note-list {
    display: grid;
    gap: 0.65rem;
}
.dashboard-project-item,
.dashboard-note-item {
    display: grid;
    gap: 0.25rem;
    padding: 0.75rem;
    border: 1px solid var(--border-line);
    border-radius: 12px;
    background: var(--bg-elevated);
    color: inherit;
    text-decoration: none;
}
.dashboard-project-item-top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
}
.dashboard-richtext {
    line-height: 1.55;
    white-space: pre-wrap;
}
.dashboard-quick-links {
    display: flex;
    flex-wrap: wrap;
    gap: 0.55rem;
}
.dashboard-planning-overview .dashboard-quick-links {
    margin-top: 1rem;
}
.dashboard-link-editor {
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px solid var(--border-line);
}
.dashboard-link-row {
    margin-bottom: 0.65rem;
}
.dashboard-widget-delete {
    margin-top: 0.85rem;
}

.dashboard-sort-hint {
    margin: 0 0 0.65rem;
}
.dashboard-sort-status {
    min-height: 1.2rem;
    margin-bottom: 0.65rem;
    color: var(--text-muted);
    font-size: 0.82rem;
}
.dashboard-sort-status.saved {
    color: #16a34a;
}
.dashboard-sort-status.error {
    color: #dc2626;
}
.dashboard-widget-sort {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 0.65rem;
}
.dashboard-widget-sort-item {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.85rem 1rem;
    border: 1px solid var(--border-line);
    border-radius: 12px;
    background: var(--bg-elevated);
    cursor: grab;
}
.dashboard-widget-sort-item.dragging {
    opacity: 0.55;
}
.dashboard-widget-sort-handle {
    color: var(--text-muted);
    font-weight: 700;
    letter-spacing: -0.08em;
}
.dashboard-widget-sort-copy {
    display: grid;
    gap: 0.15rem;
    flex: 1;
    min-width: 0;
}

.project-board-wrap {
    overflow-x: auto;
}
.workstream-hero {
    position: relative;
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 2rem;
    margin-bottom: 1rem;
    padding: 1.5rem;
    overflow: hidden;
    border: 1px solid color-mix(in srgb, #f97316 34%, var(--border-line));
    border-radius: 18px;
    background: color-mix(in srgb, #f97316 12%, var(--bg-surface));
}
.workstream-hero::after {
    content: "";
    position: absolute;
    right: -3rem;
    bottom: -4.5rem;
    width: 14rem;
    height: 9rem;
    border: 1.5rem solid color-mix(in srgb, #f97316 12%, transparent);
    border-radius: 50%;
    pointer-events: none;
}
.workstream-hero-copy {
    position: relative;
    z-index: 1;
    max-width: 64ch;
}
.workstream-kicker {
    display: inline-flex;
    margin-bottom: 0.55rem;
    padding: 0.22rem 0.55rem;
    border-radius: 999px;
    background: #f97316;
    color: #1b1009;
    font-size: 0.74rem;
    font-weight: 800;
}
.workstream-hero h1 {
    margin: 0;
    font-size: 1.8rem;
    line-height: 1.15;
    text-wrap: balance;
}
.workstream-hero p {
    margin: 0.55rem 0 0;
    color: var(--text-secondary);
    text-wrap: pretty;
}
.workstream-pulse {
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem 1.2rem;
    margin-top: 1rem;
    color: var(--text-secondary);
    font-size: 0.82rem;
}
.workstream-pulse span {
    display: inline-flex;
    align-items: baseline;
    gap: 0.3rem;
}
.workstream-pulse strong {
    color: #fb923c;
    font-size: 1rem;
}
.workstream-hero-actions {
    position: relative;
    z-index: 1;
    flex: 0 0 auto;
}
.workstream-toolbar-wrap {
    padding: 0.9rem 1rem;
}
.workstream-toolbar-wrap .board-toolbar label > span {
    display: block;
    margin-bottom: 0.35rem;
    color: var(--text-secondary);
    font-size: 0.78rem;
    font-weight: 650;
}
.workstream-board-wrap {
    margin-right: -0.35rem;
    padding: 0.25rem 0.35rem 0.75rem 0;
}
.kanban-board--wide {
    display: flex;
    gap: 1rem;
    min-width: min(100%, 1100px);
    padding: 0.25rem;
}
.kanban-board--wide .kanban-column {
    flex: 0 0 240px;
    min-width: 240px;
}
.workstream-board.kanban-board--wide {
    align-items: flex-start;
    min-width: max-content;
    gap: 0.8rem;
    padding: 0;
}
.workstream-board.kanban-board--wide .workstream-lane {
    --lane-color: #94a3b8;
    flex-basis: 272px;
    min-width: 272px;
    min-height: 25rem;
    padding: 0;
    overflow: hidden;
    border: 1px solid color-mix(in srgb, var(--lane-color) 28%, var(--border-line));
    border-radius: 14px;
    background: color-mix(in srgb, var(--lane-color) 4%, var(--bg-base));
}
.workstream-board .workstream-lane--active { --lane-color: #f97316; }
.workstream-board .workstream-lane--review { --lane-color: #eab308; }
.workstream-board .workstream-lane--blocked { --lane-color: #ef4444; }
.workstream-board .workstream-lane--done { --lane-color: #22c55e; }
.workstream-lane-head {
    min-height: 3.25rem;
    padding: 0.75rem 0.85rem;
    border-bottom: 1px solid color-mix(in srgb, var(--lane-color) 30%, var(--border-line));
    background: color-mix(in srgb, var(--lane-color) 10%, var(--bg-elevated));
}
.workstream-lane-title {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    color: var(--text-primary);
    font-size: 0.84rem;
}
.workstream-lane-title i {
    width: 0.55rem;
    height: 0.55rem;
    border-radius: 50%;
    background: var(--lane-color);
    box-shadow: 0 0 0 4px color-mix(in srgb, var(--lane-color) 15%, transparent);
}
.workstream-lane-head .badge {
    min-width: 1.6rem;
    background: color-mix(in srgb, var(--lane-color) 16%, var(--bg-surface));
    color: var(--text-primary);
    text-align: center;
}
.workstream-lane .kanban-column-body {
    gap: 0.65rem;
    min-height: 7rem;
    padding: 0.75rem;
}
.board-card {
    align-items: stretch;
}
.workstream-board .board-card {
    position: relative;
    gap: 0.5rem;
    padding: 0.75rem;
    border: 1px solid var(--border-line);
    border-radius: 11px;
    background: var(--bg-elevated);
    box-shadow: 0 3px 14px rgba(0, 0, 0, 0.09);
    transition: border-color 180ms ease-out, transform 180ms ease-out, box-shadow 180ms ease-out;
}
.workstream-board .board-card:hover,
.workstream-board .board-card:focus-within {
    border-color: color-mix(in srgb, var(--lane-color) 46%, var(--border-line));
    box-shadow: 0 8px 22px rgba(0, 0, 0, 0.14);
    transform: translateY(-2px);
}
.workstream-card-type {
    color: color-mix(in srgb, var(--lane-color) 76%, var(--text-primary));
    font-size: 0.67rem;
    font-weight: 750;
}
.workstream-board .kanban-card-title {
    font-size: 0.9rem;
    line-height: 1.3;
}
.workstream-board .kanban-card-meta {
    margin-top: 0.15rem;
    font-size: 0.75rem;
    line-height: 1.4;
}
.workstream-board .board-drag-handle {
    width: 1.65rem;
    min-width: 1.65rem;
    height: 1.65rem;
    border-radius: 7px;
    opacity: 0.62;
}
.workstream-board .board-card-form {
    margin: 0;
    padding: 0 0.75rem 0.75rem;
}
.workstream-board .board-card-form .btn {
    justify-content: center;
    width: 100%;
}
.workstream-lane-empty {
    display: grid;
    place-items: center;
    min-height: 5rem;
    padding: 1rem;
    border: 1px dashed color-mix(in srgb, var(--lane-color) 34%, var(--border-line));
    border-radius: 10px;
    color: var(--text-muted);
    font-size: 0.78rem;
    text-align: center;
}
.board-drag-handle {
    flex: 0 0 auto;
}
.board-card-form {
    display: grid;
    gap: 0.45rem;
    margin-top: 0.35rem;
}
.board-column-form,
.board-column-delete {
    margin-bottom: 0.85rem;
    padding-bottom: 0.85rem;
    border-bottom: 1px solid var(--border-line);
}
.board-column-delete {
    margin-top: -0.35rem;
}

.board-project-panel {
    margin-bottom: 1rem;
}
.board-project-panel summary {
    cursor: pointer;
    font-weight: 600;
    padding: 0.35rem 0;
}
.board-project-form {
    margin-top: 0.85rem;
}
.board-label {
    display: inline-block;
    align-self: flex-start;
    padding: 0.12rem 0.45rem;
    border-radius: 999px;
    font-size: 0.72rem;
    font-weight: 600;
    line-height: 1.3;
    background: var(--surface-muted, #e2e8f0);
    color: var(--text-muted, #475569);
}
.board-label--red { background: #fecaca; color: #991b1b; }
.board-label--yellow { background: #fef08a; color: #854d0e; }
.board-label--purple { background: #e9d5ff; color: #6b21a8; }
.board-label--green { background: #bbf7d0; color: #166534; }
.board-label--blue { background: #bfdbfe; color: #1e40af; }
.board-card-project-link {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    margin-top: 0.35rem;
    font-size: 0.76rem;
    font-weight: 700;
    color: color-mix(in srgb, #f97316 82%, var(--text-primary));
    text-decoration: none;
}
.board-card-project-link .ui-icon {
    width: 0.9rem;
    height: 0.9rem;
}
.board-card-project-link:hover {
    text-decoration: underline;
}
.board-card-editor .board-card-delete {
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px solid var(--border-line);
}
.board-overview-widget {
    display: grid;
    gap: 0.55rem;
}
.board-overview-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.45rem 0;
    border-bottom: 1px solid var(--border-line);
}
.board-overview-item:last-child {
    border-bottom: 0;
}
.board-overview-item strong {
    font-size: 1.1rem;
}
.board-overview-link {
    margin-top: 0.35rem;
    justify-self: start;
}
.board-switcher {
    margin-bottom: 1rem;
}
.board-toolbar-wrap {
    margin-bottom: 0.75rem;
}
.board-toolbar {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 220px;
    gap: 0.85rem;
    align-items: end;
}
.board-search {
    min-width: 0;
}
.board-filter-status {
    margin: 0.65rem 0 0;
    min-height: 1.2rem;
}
.board-checklist-progress {
    font-size: 0.78rem;
    color: var(--text-muted, #64748b);
}
.board-settings-list {
    display: grid;
    gap: 0.55rem;
}
.board-settings-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.55rem 0;
    border-bottom: 1px solid var(--border-line);
}
.board-settings-row:last-child {
    border-bottom: 0;
}
.board-delete-form {
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px solid var(--border-line);
}
.board-checklist {
    margin-top: 1.25rem;
    padding-top: 1.25rem;
    border-top: 1px solid var(--border-line);
}
.board-checklist-list {
    list-style: none;
    margin: 0 0 1rem;
    padding: 0;
    display: grid;
    gap: 0.45rem;
}
.board-checklist-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
}
.board-checklist-label {
    display: flex;
    align-items: flex-start;
    gap: 0.55rem;
    flex: 1;
}
.board-checklist-label input:checked + span {
    text-decoration: line-through;
    color: var(--text-muted, #64748b);
}
.board-checklist-delete {
    margin: 0;
}

.board-card--has-cover {
    padding-top: 0;
    overflow: hidden;
}
.board-card-cover {
    display: block;
    width: 100%;
    border: 0;
    padding: 0;
    margin: 0 0 0.35rem;
    background: #e2e8f0;
    cursor: pointer;
}
.board-card-cover img {
    display: block;
    width: 100%;
    height: 96px;
    object-fit: cover;
}
.kanban-card-link.board-card-open {
    cursor: pointer;
}
.kanban-card-link.board-card-open:hover .kanban-card-title {
    color: var(--accent);
}

.board-card-modal {
    position: fixed;
    inset: 0;
    z-index: 1200;
    display: flex;
    align-items: flex-start;
    justify-content: center;
    padding: 2rem 1rem;
    overflow-y: auto;
}
.board-card-modal[hidden] {
    display: none !important;
}
body.board-modal-open {
    overflow: hidden;
}
.board-card-modal-backdrop {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.68);
}
:root[data-theme="light"] .board-card-modal-backdrop {
    background: rgba(15, 23, 42, 0.55);
}
.board-card-modal-dialog {
    position: relative;
    width: min(720px, 100%);
    max-height: calc(100vh - 4rem);
    overflow: auto;
    background: var(--bg-surface);
    color: var(--text-primary);
    border: 1px solid var(--border-line);
    border-radius: 12px;
    box-shadow: 0 24px 60px rgba(0, 0, 0, 0.45);
}
:root[data-theme="light"] .board-card-modal-dialog {
    box-shadow: 0 24px 60px rgba(15, 23, 42, 0.25);
}
.board-card-modal-body {
    min-height: 120px;
}
.board-card-modal-loading {
    padding: 2rem;
    text-align: center;
    color: var(--text-muted);
}
.board-card-panel-head {
    display: flex;
    justify-content: flex-end;
    padding: 0.65rem 0.85rem 0;
}
.board-card-modal-close {
    width: 2rem;
    height: 2rem;
    border: 1px solid var(--border-line);
    border-radius: 999px;
    background: var(--bg-elevated);
    color: var(--text-primary);
    font-size: 1.25rem;
    line-height: 1;
    cursor: pointer;
}
.board-card-modal-close:hover {
    background: var(--border-line);
}
.board-card-modal-cover {
    margin: 0 0 0.85rem;
}
.board-card-modal-cover img {
    display: block;
    width: 100%;
    max-height: 220px;
    object-fit: cover;
    border-radius: 0;
}
.board-card-panel {
    padding: 0 1.1rem 1.1rem;
}
.board-card-panel .section-head h2 {
    font-size: 1rem;
    margin: 0;
    color: var(--text-primary);
}
.board-card-panel .muted {
    color: var(--text-muted);
}
.board-card-panel .checkbox-row {
    display: flex;
    align-items: center;
    gap: 0.55rem;
}
.board-card-panel .checkbox-row span {
    margin: 0;
    font-size: 0.84rem;
    font-weight: 400;
    letter-spacing: 0;
    text-transform: none;
    color: var(--text-secondary);
}
.board-card-panel input[type="file"].field-input {
    padding: 0.45rem 0.65rem;
}
.board-card-panel input[type="file"].field-input::file-selector-button {
    margin-right: 0.75rem;
    padding: 0.35rem 0.65rem;
    border: 1px solid var(--border-line-strong);
    border-radius: 4px;
    background: var(--bg-elevated);
    color: var(--text-primary);
    cursor: pointer;
}
.board-card-panel input[type="file"].field-input::file-selector-button:hover {
    background: var(--border-line);
}
.board-attachments,
.board-checklist,
.board-card-delete {
    margin-top: 1.25rem;
    padding-top: 1.25rem;
    border-top: 1px solid var(--border-line);
}
.board-attachment-list {
    display: grid;
    gap: 0.65rem;
}
.board-attachment-row {
    display: grid;
    grid-template-columns: 72px minmax(0, 1fr) auto;
    gap: 0.75rem;
    align-items: center;
    padding: 0.55rem 0;
    border-bottom: 1px solid var(--border-line);
}
.board-attachment-row:last-child {
    border-bottom: 0;
}
.board-attachment-preview {
    display: block;
    width: 72px;
    height: 54px;
    border-radius: 6px;
    overflow: hidden;
    background: var(--bg-elevated);
    border: 1px solid var(--border-line);
}
.board-attachment-thumb {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.board-attachment-icon {
    display: grid;
    place-items: center;
    width: 100%;
    height: 100%;
    font-size: 1.2rem;
    color: var(--text-muted, #64748b);
}
.board-attachment-icon--pdf {
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    color: #f87171;
}
:root[data-theme="light"] .board-attachment-icon--pdf {
    color: #b91c1c;
}
.board-attachment-preview--pdf {
    border: 0;
    padding: 0;
    cursor: pointer;
}
.board-pdf-viewer {
    grid-column: 1 / -1;
    margin-top: 0.35rem;
}
.board-pdf-viewer iframe {
    display: block;
    width: 100%;
    height: min(70vh, 520px);
    border: 1px solid var(--border-line);
    border-radius: 8px;
    background: var(--bg-elevated);
}
:root[data-theme="light"] .board-pdf-viewer iframe {
    background: #fff;
}
.board-attachment-copy strong {
    display: block;
    word-break: break-word;
}
.board-attachment-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
    justify-content: flex-end;
}
.board-attachment-actions form {
    margin: 0;
}

@media (max-width: 960px) {
    .board-card-modal {
        padding: 0;
        align-items: stretch;
    }
    .board-card-modal-dialog {
        width: 100%;
        max-height: none;
        min-height: 100vh;
        border-radius: 0;
    }
    .board-attachment-row {
        grid-template-columns: 60px minmax(0, 1fr);
    }
    .board-attachment-actions {
        grid-column: 1 / -1;
        justify-content: flex-start;
    }
    .dashboard-widget--span-3,
    .dashboard-widget--span-4,
    .dashboard-widget--span-6,
    .dashboard-widget--span-8 {
        grid-column: span 12;
    }
    .dashboard-intro-actions {
        align-items: stretch;
    }
}

/* LV manual editor & detail */
.lv-form-table .field-input {
    min-width: 0;
    width: 100%;
}
.lv-form-table td {
    vertical-align: top;
}
.lv-form-title-cell {
    white-space: nowrap;
}
.lv-form-title-check {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-size: 0.85rem;
}
.lv-detail-hint {
    margin: 0 0 0.75rem;
}
.lv-title-row td {
    background: var(--bg-elevated);
    font-weight: 600;
}
.lv-position-pickable {
    cursor: pointer;
}
.lv-position-pickable:hover td {
    background: color-mix(in srgb, var(--accent, #6366f1) 8%, transparent);
}
.lv-positions-table .actions {
    white-space: nowrap;
}
.quote-lv-picker {
    align-items: end;
}

/* Fuhrpark */
.fleet-overview-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 1rem;
}
.fleet-overview-grid .muted {
    display: block;
    font-size: 0.8rem;
    margin-bottom: 0.2rem;
}
.fleet-tabs {
    margin-bottom: 0.75rem;
}
.fleet-reminder-panel {
    margin-bottom: 1rem;
}
.fleet-deadline-overdue td {
    background: color-mix(in srgb, #dc2626 12%, transparent);
}
.fleet-deadline-soon td {
    background: color-mix(in srgb, #d97706 10%, transparent);
}
.fleet-deadline-done td {
    opacity: 0.65;
}
.fleet-status-aktiv { background: color-mix(in srgb, #16a34a 15%, transparent); }
.fleet-status-werkstatt { background: color-mix(in srgb, #d97706 15%, transparent); }
.fleet-status-inaktiv,
.fleet-status-verkauft { background: color-mix(in srgb, #64748b 15%, transparent); }
.fleet-equipment-split {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(280px, 340px);
    gap: 1rem;
    margin-top: 1rem;
}
.fleet-assign-panel {
    padding: 1rem;
    align-self: start;
    position: sticky;
    top: 1rem;
}
.fleet-assign-panel h2 {
    margin: 0 0 0.35rem;
    font-size: 1.1rem;
}
.fleet-equipment-row.is-selected td {
    background: color-mix(in srgb, var(--accent, #6366f1) 10%, transparent);
}
.fleet-equipment-link {
    font-weight: 600;
    text-decoration: none;
}
.fleet-equipment-link:hover {
    text-decoration: underline;
}
@media (max-width: 960px) {
    .fleet-equipment-split {
        grid-template-columns: 1fr;
    }
    .fleet-assign-panel {
        position: static;
    }
}

.app-announcement-banner {
    position: relative;
    color: #e8eaed;
    text-align: center;
    font-size: 0.9rem;
    line-height: 1.55;
    border-bottom: 1px solid var(--border-line);
}
.app-announcement-banner[hidden] {
    display: none;
}
.app-announcement-banner-inner {
    max-width: 1680px;
    margin: 0 auto;
    padding: 0.85rem 3rem 0.85rem 2rem;
}
.app-announcement-link {
    color: inherit;
    text-decoration: underline;
    text-underline-offset: 2px;
}
.app-announcement-link:hover {
    opacity: 0.9;
}
.app-announcement-close {
    position: absolute;
    top: 50%;
    right: 1rem;
    transform: translateY(-50%);
    width: 1.75rem;
    height: 1.75rem;
    border: 0;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.12);
    color: inherit;
    font-size: 1.1rem;
    line-height: 1;
    cursor: pointer;
}
.app-announcement-close:hover {
    background: rgba(255, 255, 255, 0.22);
}
.announcement-preview {
    margin-top: 1rem;
    border-radius: 8px;
    overflow: hidden;
}
.color-picker-row {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}
.color-picker-row input[type="color"] {
    width: 2.75rem;
    height: 2.75rem;
    padding: 0.15rem;
    border: 1px solid var(--border-line);
    border-radius: 8px;
    background: var(--bg-surface);
    cursor: pointer;
    flex: 0 0 auto;
}
.color-picker-row .field-input {
    flex: 1;
    min-width: 0;
}
.feedback-layout {
    display: grid;
    grid-template-columns: minmax(0, 1.4fr) minmax(280px, 0.9fr);
    gap: 1rem;
    align-items: start;
}
.feedback-side {
    display: grid;
    gap: 1rem;
}
.feedback-list {
    display: grid;
    gap: 0.65rem;
}
.feedback-item {
    display: grid;
    gap: 0.2rem;
    padding: 0.85rem 1rem;
    border: 1px solid var(--border-line);
    border-radius: 10px;
    background: color-mix(in srgb, var(--bg-surface) 92%, transparent);
    text-decoration: none;
    color: inherit;
    transition: border-color 0.15s ease, background 0.15s ease;
}
.feedback-item:hover {
    border-color: color-mix(in srgb, var(--accent) 35%, var(--border-line));
    background: color-mix(in srgb, var(--accent) 6%, var(--bg-surface));
}
.feedback-item span,
.feedback-item small {
    color: var(--text-muted);
}
.feedback-detail-body {
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px solid var(--border-line);
    line-height: 1.6;
    white-space: normal;
}
.feedback-item-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
}
.feedback-status {
    display: inline-flex;
    align-items: center;
    padding: 0.15rem 0.55rem;
    border-radius: 999px;
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.02em;
}
.feedback-status-open {
    background: color-mix(in srgb, #f59e0b 18%, transparent);
    color: #fbbf24;
}
@media (max-width: 700px) {
    .workstream-hero {
        flex-direction: column;
        gap: 1.1rem;
        padding: 1.15rem;
        border-radius: 14px;
    }
    .workstream-hero h1 {
        font-size: 1.45rem;
    }
    .workstream-pulse {
        display: grid;
        grid-template-columns: repeat(3, minmax(0, 1fr));
        gap: 0.45rem;
    }
    .workstream-pulse span {
        display: grid;
        gap: 0.05rem;
        padding: 0.55rem;
        border-radius: 9px;
        background: color-mix(in srgb, var(--bg-surface) 70%, transparent);
    }
    .workstream-hero-actions {
        width: 100%;
    }
    .workstream-hero-actions .btn {
        flex: 1 1 auto;
        justify-content: center;
    }
    .workstream-board.kanban-board--wide .workstream-lane {
        flex-basis: min(84vw, 310px);
        min-width: min(84vw, 310px);
        min-height: 22rem;
        scroll-snap-align: start;
    }
}
@media (prefers-reduced-motion: reduce) {
    .workstream-board .board-card {
        transition: none;
    }
    .workstream-board .board-card:hover,
    .workstream-board .board-card:focus-within {
        transform: none;
    }
}
.workstream-board .board-card--has-cover {
    display: grid;
    grid-template-columns: auto 3.25rem;
    padding-top: 0.75rem;
}
.workstream-board .board-card-cover {
    grid-column: 2;
    grid-row: 1;
    width: 3.25rem;
    height: 3.25rem;
    margin: 0;
    overflow: hidden;
    border-radius: 8px;
}
.workstream-board .board-card-cover img {
    height: 100%;
}
.workstream-board .board-card--has-cover .board-drag-handle {
    grid-column: 1;
    grid-row: 1;
}
.workstream-board .board-card--has-cover .kanban-card-link {
    grid-column: 1 / -1;
}
.feedback-status-in_progress {
    background: color-mix(in srgb, #3b82f6 18%, transparent);
    color: #60a5fa;
}
.feedback-status-review {
    background: color-mix(in srgb, #a855f7 18%, transparent);
    color: #c084fc;
}
.feedback-status-done {
    background: color-mix(in srgb, #22c55e 18%, transparent);
    color: #4ade80;
}
.feedback-delete-form {
    display: flex;
    justify-content: flex-end;
    margin-top: 0.75rem;
}
:root[data-theme="light"] .feedback-status-in_progress { color: #1d4ed8; }
:root[data-theme="light"] .feedback-status-review { color: #7e22ce; }
.feedback-status-form {
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px solid var(--border-line);
}
.feedback-attachments {
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px solid var(--border-line);
}
.feedback-attachments h3 {
    margin: 0 0 0.75rem;
    font-size: 0.95rem;
}
.feedback-attachment-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
    gap: 0.75rem;
}
.feedback-attachment-card {
    display: grid;
    gap: 0.4rem;
    padding: 0.55rem;
    border: 1px solid var(--border-line);
    border-radius: 10px;
    text-decoration: none;
    color: inherit;
    background: color-mix(in srgb, var(--bg-surface) 92%, transparent);
}
.feedback-attachment-card img {
    width: 100%;
    height: 90px;
    object-fit: cover;
    border-radius: 6px;
    background: #111;
}
.feedback-attachment-card span {
    font-size: 0.78rem;
    color: var(--text-muted);
    word-break: break-word;
}
.feedback-attachment-file {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 90px;
    border-radius: 6px;
    background: color-mix(in srgb, var(--accent) 10%, var(--bg-surface));
    font-weight: 700;
}

.project-archive-banner {
    margin-bottom: 1rem;
    border-left: 4px solid #64748b;
}
.project-archive-banner p {
    margin: 0 0 0.5rem;
}
.project-archive-banner .btn {
    margin-top: 0.25rem;
}

.project-termine-snippet-list {
    margin: 0;
    padding-left: 1.1rem;
}
.project-termine-snippet-list li {
    margin-bottom: 0.35rem;
}
.project-termine-week-nav {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-bottom: 0.75rem;
}
.project-termine-stats {
    display: flex;
    gap: 1rem;
    margin-bottom: 1rem;
    font-size: 0.9rem;
    color: var(--text-muted, #64748b);
}
.project-termine-week-grid {
    display: grid;
    grid-template-columns: repeat(7, minmax(0, 1fr));
    gap: 0.5rem;
}
.project-termine-day {
    border: 1px solid color-mix(in srgb, var(--border, #e2e8f0) 80%, transparent);
    border-radius: 8px;
    padding: 0.5rem;
    min-height: 120px;
    background: color-mix(in srgb, var(--bg-surface, #fff) 96%, #64748b 4%);
}
.project-termine-day.is-today {
    border-color: color-mix(in srgb, var(--accent, #0284c7) 55%, transparent);
    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--accent, #0284c7) 25%, transparent);
}
.project-termine-day-head {
    display: flex;
    justify-content: space-between;
    font-size: 0.8rem;
    margin-bottom: 0.35rem;
    font-weight: 600;
}
.project-termine-chip {
    position: relative;
    border-radius: 6px;
    padding: 0.35rem 0.45rem;
    margin-bottom: 0.35rem;
    font-size: 0.78rem;
    line-height: 1.35;
    display: grid;
    gap: 0.1rem;
}
.project-termine-chip strong {
    font-size: 0.8rem;
}
.project-termine-chip--appointment {
    background: color-mix(in srgb, #0284c7 12%, transparent);
}
.project-termine-chip--deployment {
    background: color-mix(in srgb, #16a34a 12%, transparent);
}
.project-termine-delete-form {
    position: absolute;
    top: 0.15rem;
    right: 0.15rem;
    margin: 0;
}
.project-termine-delete-form .btn {
    min-width: 0;
    padding: 0 0.35rem;
    line-height: 1.2;
}
.project-termine-empty {
    margin: 0.5rem 0 0;
    font-size: 0.8rem;
}
@media (max-width: 960px) {
    .project-termine-week-grid {
        grid-template-columns: 1fr;
    }
}

@media (hover: none), (pointer: coarse) {
    .btn,
    .icon-btn,
    .nav-link,
    .nav-group-toggle,
    .user-menu-trigger,
    .user-menu-item,
    .field-input,
    .tab,
    summary {
        min-height: 44px;
    }
}

@media (max-width: 760px) {
    html,
    body {
        max-width: 100%;
        overflow-x: hidden;
    }

    body {
        background-size: 24px 24px;
    }

    .app-header {
        top: 0;
    }

    .app-header-top {
        gap: 0.65rem;
        padding: calc(0.55rem + env(safe-area-inset-top, 0px)) 0.75rem 0.65rem;
    }

    .app-header-brand {
        min-width: 0;
        flex: 1 1 auto;
    }

    .app-header-brand .brand-logo-img {
        max-width: min(42vw, 142px);
        height: 28px;
    }

    .app-header-actions {
        gap: 0.4rem;
    }

    .app-switch-btn {
        display: none;
    }

    .global-search {
        order: 3;
        flex-basis: 100%;
    }

    .global-search .field-input {
        min-height: 42px;
        border-radius: 8px;
    }

    .notification-panel,
    .user-menu-panel {
        position: fixed;
        top: calc(4.35rem + env(safe-area-inset-top, 0px));
        right: 0.75rem;
        left: 0.75rem;
        width: auto;
        max-height: min(72vh, 520px);
        overflow: auto;
        border-radius: 10px;
    }

    .notification-actions {
        flex-wrap: wrap;
    }

    .notification-actions button,
    .notification-item,
    .user-menu-item,
    .user-menu-profile {
        min-height: 44px;
    }

    .main {
        padding: 0.85rem 0.75rem 1.25rem;
    }

    .intro,
    .section-head,
    .dashboard-widget-head,
    .dashboard-widget-subhead,
    .board-toolbar,
    .board-settings-row,
    .form-actions,
    .upload-row,
    .actions,
    .ticket-toolbar-actions,
    .dashboard-intro-actions {
        align-items: stretch;
    }

    .intro h1,
    .form-card h1,
    .section-head h1 {
        font-size: 1.55rem;
        line-height: 1.12;
        letter-spacing: 0;
        overflow-wrap: anywhere;
        text-wrap: balance;
    }

    .section-head,
    .dashboard-widget-head,
    .dashboard-widget-subhead,
    .form-actions,
    .upload-row,
    .board-settings-row,
    .notification-head {
        flex-direction: column;
    }

    .form-actions,
    .upload-row {
        gap: 0.55rem;
        padding-top: 0.85rem;
    }

    .form-actions .btn,
    .form-actions button,
    .form-actions a,
    .upload-row .btn,
    .upload-row button,
    .upload-row input,
    .actions .btn,
    .actions button,
    .actions a,
    .ticket-toolbar-actions .btn,
    .ticket-toolbar-actions button,
    .ticket-toolbar-actions a {
        width: 100%;
        min-width: 0;
        justify-content: center;
    }

    .surface,
    .login-card,
    .form-card {
        border-radius: 8px;
    }

    .table-wrap {
        overflow: visible;
    }

    .table-wrap table:not(.plantafel-table):not(.lv-form-table):not(.aufmass-sheet-table) {
        display: block;
        width: 100%;
        border-collapse: separate;
        border-spacing: 0;
        font-size: 0.88rem;
    }

    .table-wrap table:not(.plantafel-table):not(.lv-form-table):not(.aufmass-sheet-table) thead {
        display: none;
    }

    .table-wrap table:not(.plantafel-table):not(.lv-form-table):not(.aufmass-sheet-table) tbody,
    .table-wrap table:not(.plantafel-table):not(.lv-form-table):not(.aufmass-sheet-table) tr,
    .table-wrap table:not(.plantafel-table):not(.lv-form-table):not(.aufmass-sheet-table) td {
        display: block;
        width: 100%;
    }

    .table-wrap table:not(.plantafel-table):not(.lv-form-table):not(.aufmass-sheet-table) tbody {
        display: grid;
        gap: 0.75rem;
    }

    .table-wrap table:not(.plantafel-table):not(.lv-form-table):not(.aufmass-sheet-table) tr {
        overflow: hidden;
        border: 1px solid var(--border-line);
        border-radius: 10px;
        background: var(--bg-surface);
    }

    .table-wrap table:not(.plantafel-table):not(.lv-form-table):not(.aufmass-sheet-table) td {
        position: relative;
        min-height: 42px;
        padding: 0.72rem 0.85rem 0.72rem 44%;
        border-bottom: 1px solid var(--border-line);
        white-space: normal;
        overflow-wrap: anywhere;
        text-align: left;
    }

    .table-wrap table:not(.plantafel-table):not(.lv-form-table):not(.aufmass-sheet-table) td:last-child {
        border-bottom: 0;
    }

    .table-wrap table:not(.plantafel-table):not(.lv-form-table):not(.aufmass-sheet-table) td::before {
        content: attr(data-label);
        position: absolute;
        top: 0.72rem;
        left: 0.85rem;
        width: calc(44% - 1.2rem);
        color: var(--text-muted);
        font-size: 0.68rem;
        font-weight: 700;
        letter-spacing: 0.06em;
        line-height: 1.25;
        text-transform: uppercase;
    }

    .table-wrap td.actions,
    .table-wrap .actions {
        display: flex;
        flex-wrap: wrap;
        justify-content: stretch;
        gap: 0.45rem;
    }

    .table-wrap td.actions::before {
        position: static;
        width: 100%;
        flex: 0 0 100%;
    }

    .table-wrap td.actions > .btn,
    .table-wrap td.actions > form,
    .table-wrap td.actions > .split-action {
        width: 100%;
        margin-left: 0;
    }

    .project-board-wrap,
    .plantafel-wrap,
    .lv-table-wrap {
        margin-right: -0.75rem;
        margin-left: -0.75rem;
        padding: 0 0.75rem 0.35rem;
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }

    .kanban-board--wide {
        min-width: 0;
        padding-bottom: 0.35rem;
        scroll-snap-type: x proximity;
    }

    .kanban-board--wide .kanban-column {
        flex-basis: min(82vw, 300px);
        min-width: min(82vw, 300px);
        scroll-snap-align: start;
    }

    .board-toolbar {
        grid-template-columns: 1fr;
    }

    .board-card-modal {
        padding: 0;
    }

    .board-card-modal-dialog {
        width: 100%;
        min-height: 100dvh;
        max-height: none;
        border-right: 0;
        border-left: 0;
        border-radius: 0;
    }

    .board-attachment-row,
    .board-checklist-item,
    .project-milestone-item,
    .note-card-meta,
    .doc-list li {
        align-items: stretch;
        flex-direction: column;
    }

    .doc-list {
        padding: 0 0.85rem 0.85rem;
    }

    .mobile-bottom-nav {
        overflow-x: auto;
        scrollbar-width: none;
    }

    .mobile-bottom-nav::-webkit-scrollbar {
        display: none;
    }

    .mobile-bottom-nav-item {
        flex: 0 0 calc(100% / 6);
        min-width: 3.35rem;
        min-height: 3.6rem;
        border-radius: 8px;
    }
}

@media (max-width: 420px) {
    .notification-panel,
    .user-menu-panel {
        top: calc(6.8rem + env(safe-area-inset-top, 0px));
    }

    .table-wrap table:not(.plantafel-table):not(.lv-form-table):not(.aufmass-sheet-table) td {
        padding: 0.7rem 0.75rem;
    }

    .table-wrap table:not(.plantafel-table):not(.lv-form-table):not(.aufmass-sheet-table) td::before {
        position: static;
        display: block;
        width: auto;
        margin-bottom: 0.28rem;
    }

    .mobile-project-quick,
    .project-media-grid {
        grid-template-columns: 1fr;
    }
}

.company-branding-panel {
    padding: 14px 16px;
    border: 1px solid var(--border, #e5e7eb);
    border-radius: 10px;
    background: var(--surface-muted, #f9fafb);
}

.company-branding-panel-inner {
    display: flex;
    gap: 16px;
    align-items: flex-start;
    flex-wrap: wrap;
}

.company-branding-logo {
    max-height: 72px;
    max-width: 280px;
    object-fit: contain;
}

.company-branding-address {
    font-size: 0.95rem;
    line-height: 1.45;
}

/* Dashboard cockpit */
.dashboard-focus {
    display: flex;
    align-items: stretch;
    gap: 1rem;
    margin-bottom: 1rem;
    padding: 0.8rem;
    border: 1px solid color-mix(in srgb, #f97316 26%, var(--border-line));
    border-radius: 16px;
    background: color-mix(in srgb, #f97316 7%, var(--bg-surface));
}
.dashboard-focus-intro {
    display: flex;
    flex: 0 0 155px;
    flex-direction: column;
    justify-content: center;
    padding: 0.35rem 0.55rem;
}
.dashboard-focus-intro h2 {
    margin: 0;
    font-size: 1rem;
    text-wrap: balance;
}
.dashboard-focus-intro p {
    margin: 0.2rem 0 0;
    color: var(--text-muted);
    font-size: 0.75rem;
}
.dashboard-focus-items {
    display: grid;
    flex: 1;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    border: 1px solid var(--border-line);
    border-radius: 11px;
    background: var(--bg-surface);
}
.dashboard-focus-item {
    --focus-color: #94a3b8;
    display: flex;
    align-items: center;
    gap: 0.65rem;
    min-width: 0;
    padding: 0.65rem 0.8rem;
    border-right: 1px solid var(--border-line);
    color: var(--text-primary);
    text-decoration: none;
    transition: background 180ms ease-out;
}
.dashboard-focus-item:last-child { border-right: 0; }
.dashboard-focus-item:hover,
.dashboard-focus-item:focus-visible {
    background: color-mix(in srgb, var(--focus-color) 9%, var(--bg-surface));
}
.dashboard-focus-item--warning { --focus-color: #ef4444; }
.dashboard-focus-item--info { --focus-color: #3b82f6; }
.dashboard-focus-item--project { --focus-color: #f97316; }
.dashboard-focus-item--calm { --focus-color: #22c55e; }
.dashboard-focus-icon {
    display: grid;
    place-items: center;
    flex: 0 0 2rem;
    width: 2rem;
    height: 2rem;
    border-radius: 9px;
    background: color-mix(in srgb, var(--focus-color) 14%, transparent);
    color: var(--focus-color);
}
.dashboard-focus-icon .ui-icon {
    width: 1rem;
    height: 1rem;
}
.dashboard-focus-copy {
    display: grid;
    min-width: 0;
}
.dashboard-focus-copy strong {
    font-size: 1.15rem;
    line-height: 1.1;
}
.dashboard-focus-copy span {
    overflow: hidden;
    color: var(--text-secondary);
    font-size: 0.7rem;
    line-height: 1.25;
    text-overflow: ellipsis;
}
.dashboard-widget {
    --widget-accent: #94a3b8;
    position: relative;
}
.dashboard-widget:has(.dashboard-widget-menu[open]) { z-index: 45; }
.dashboard-widget--project { --widget-accent: #f97316; }
.dashboard-widget--work { --widget-accent: #3b82f6; }
.dashboard-widget--knowledge { --widget-accent: #a855f7; }
.dashboard-widget--masterdata { --widget-accent: #14b8a6; }
.dashboard-widget-inner {
    position: relative;
    overflow: visible;
    margin-bottom: 0;
    border-color: color-mix(in srgb, var(--widget-accent) 22%, var(--border-line));
    transition: border-color 180ms ease-out, box-shadow 180ms ease-out;
}
.dashboard-widget-inner:hover {
    border-color: color-mix(in srgb, var(--widget-accent) 38%, var(--border-line));
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.09);
}
.dashboard-widget-heading {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    min-width: 0;
}
.dashboard-widget-icon {
    display: grid;
    place-items: center;
    flex: 0 0 2rem;
    width: 2rem;
    height: 2rem;
    border-radius: 9px;
    background: color-mix(in srgb, var(--widget-accent) 14%, transparent);
    color: var(--widget-accent);
}
.dashboard-widget-icon .ui-icon {
    width: 1rem;
    height: 1rem;
}
.dashboard-widget-menu {
    position: relative;
    flex: 0 0 auto;
}
.dashboard-widget-menu summary {
    display: grid;
    place-items: center;
    width: 2rem;
    height: 2rem;
    border-radius: 8px;
    color: var(--text-muted);
    cursor: pointer;
    list-style: none;
}
.dashboard-widget-menu summary::-webkit-details-marker { display: none; }
.dashboard-widget-menu summary:hover,
.dashboard-widget-menu summary:focus-visible,
.dashboard-widget-menu[open] summary {
    background: var(--bg-elevated);
    color: var(--text-primary);
}
.dashboard-widget-menu summary .ui-icon {
    width: 1.1rem;
    height: 1.1rem;
}
.dashboard-widget-menu-popover {
    position: absolute;
    z-index: 40;
    top: calc(100% + 0.35rem);
    right: 0;
    display: grid;
    width: max-content;
    min-width: 11rem;
    padding: 0.35rem;
    border: 1px solid var(--border-line);
    border-radius: 10px;
    background: var(--bg-surface);
    box-shadow: 0 16px 34px rgba(0, 0, 0, 0.22);
}
.dashboard-widget-menu-popover a,
.dashboard-widget-menu-popover span {
    padding: 0.55rem 0.65rem;
    border-radius: 7px;
    color: var(--text-primary);
    font-size: 0.78rem;
    text-decoration: none;
}
.dashboard-widget-menu-popover a:hover,
.dashboard-widget-menu-popover a:focus-visible {
    background: var(--bg-elevated);
}
.dashboard-widget-stat {
    position: relative;
    min-height: 76px;
    padding: 0.15rem;
    color: var(--text-primary);
    text-decoration: none;
}
.dashboard-widget-stat .stat-card-icon {
    width: 2.4rem;
    height: 2.4rem;
    border-radius: 10px;
    background: color-mix(in srgb, var(--widget-accent) 13%, transparent);
    color: var(--widget-accent);
}
.dashboard-widget-stat .stat-card-icon svg {
    width: 1.25rem;
    height: 1.25rem;
}
.dashboard-widget-stat-copy {
    display: flex;
    flex: 1;
    flex-direction: column;
}
.dashboard-widget-stat-copy span {
    color: var(--text-secondary);
    font-size: 0.77rem;
    font-weight: 650;
}
.dashboard-widget-stat-copy strong {
    color: var(--widget-accent);
}
.dashboard-stat-open {
    display: grid;
    place-items: center;
    width: 1.8rem;
    height: 1.8rem;
    border-radius: 50%;
    color: var(--text-muted);
    transition: transform 180ms ease-out, background 180ms ease-out;
}
.dashboard-widget-stat:hover .dashboard-stat-open {
    background: color-mix(in srgb, var(--widget-accent) 12%, transparent);
    color: var(--widget-accent);
    transform: translateX(2px);
}
.dashboard-stat-open .ui-icon {
    width: 0.95rem;
    height: 0.95rem;
}
.dashboard-milestone-list {
    gap: 0;
}
.dashboard-milestone-item {
    grid-template-columns: 1rem minmax(0, 1fr) auto;
    gap: 0.15rem 0.6rem;
    padding: 0.72rem 0.15rem;
    border: 0;
    border-bottom: 1px solid var(--border-line);
    border-radius: 0;
    background: transparent;
}
.dashboard-milestone-item:last-child { border-bottom: 0; }
.dashboard-milestone-item:hover {
    border-color: var(--border-line);
    background: color-mix(in srgb, var(--widget-accent) 6%, transparent);
}
.dashboard-milestone-state {
    grid-column: 1;
    grid-row: 1 / span 2;
    display: flex;
    justify-content: center;
    padding-top: 0.3rem;
}
.dashboard-milestone-state i {
    width: 0.55rem;
    height: 0.55rem;
    border-radius: 50%;
    background: #ea580c;
}
.milestone-status-active .dashboard-milestone-state i { background: #2563eb; }
.dashboard-milestone-title {
    grid-column: 2;
    grid-row: 1;
    font-size: 0.86rem;
}
.dashboard-milestone-project {
    grid-column: 2;
    grid-row: 2;
    font-size: 0.73rem;
}
.dashboard-milestone-due {
    grid-column: 3;
    grid-row: 1 / span 2;
    align-self: center;
    padding: 0.25rem 0.45rem;
    border-radius: 999px;
    background: var(--bg-elevated);
    color: var(--text-secondary);
    font-size: 0.68rem;
    font-weight: 700;
    white-space: nowrap;
}
.dashboard-milestone-due--overdue {
    background: color-mix(in srgb, #ef4444 14%, transparent);
    color: #ef4444;
}
.dashboard-milestone-due--today,
.dashboard-milestone-due--soon {
    background: color-mix(in srgb, #f97316 14%, transparent);
    color: #f97316;
}
:root[data-theme="light"] .dashboard-milestone-due--overdue { color: #b91c1c; }
:root[data-theme="light"] .dashboard-milestone-due--today,
:root[data-theme="light"] .dashboard-milestone-due--soon { color: #c2410c; }
.dashboard-milestone-more {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    margin-top: 0.7rem;
    color: var(--widget-accent);
    font-size: 0.76rem;
    font-weight: 700;
    text-decoration: none;
}
.dashboard-milestone-more .ui-icon {
    width: 0.9rem;
    height: 0.9rem;
}
@media (max-width: 1100px) {
    .dashboard-focus-items {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    .dashboard-focus-item:nth-child(2) { border-right: 0; }
    .dashboard-focus-item:nth-child(-n+2) { border-bottom: 1px solid var(--border-line); }
}
@media (max-width: 700px) {
    .dashboard-focus {
        flex-direction: column;
        gap: 0.55rem;
    }
    .dashboard-focus-intro {
        flex-basis: auto;
        padding: 0.25rem 0.35rem;
    }
    .dashboard-focus-items {
        grid-template-columns: 1fr 1fr;
    }
    .dashboard-focus-item {
        align-items: flex-start;
        padding: 0.7rem;
    }
    .dashboard-focus-copy strong { font-size: 1rem; }
    .dashboard-widget-head {
        flex-direction: row;
        align-items: center;
    }
    .dashboard-widget-heading h2 {
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }
    .dashboard-milestone-item {
        grid-template-columns: 1rem minmax(0, 1fr);
    }
    .dashboard-milestone-due {
        grid-column: 2;
        grid-row: 3;
        justify-self: start;
        margin-top: 0.25rem;
    }
}
@media (prefers-reduced-motion: reduce) {
    .dashboard-focus-item,
    .dashboard-widget-inner,
    .dashboard-stat-open {
        transition: none;
    }
    .dashboard-widget-stat:hover .dashboard-stat-open {
        transform: none;
    }
}

/* Customer portal: public surface and internal management */
.customer-portal-body {
    --portal-ink: #161329;
    --portal-muted: #67647a;
    --portal-line: #dedcea;
    --portal-surface: #ffffff;
    --portal-bg: #f5f5fa;
    --portal-accent: #6d28d9;
    margin: 0;
    background: var(--portal-bg);
    color: var(--portal-ink);
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
.customer-portal-topbar {
    position: sticky;
    z-index: 20;
    top: 0;
    display: flex;
    min-height: 4.25rem;
    align-items: center;
    gap: 2rem;
    padding: 0 4vw;
    border-bottom: 1px solid var(--portal-line);
    background: rgba(255, 255, 255, 0.96);
}
.customer-portal-brand {
    display: inline-flex;
    align-items: center;
    gap: 0.65rem;
    color: var(--portal-ink);
    text-decoration: none;
}
.customer-portal-brand > span {
    display: grid;
    width: 2rem;
    height: 2rem;
    place-items: center;
    border-radius: 8px;
    background: var(--portal-accent);
    color: #fff;
    font-weight: 850;
}
.customer-portal-topbar nav { display: flex; flex: 1; align-items: center; gap: 1.35rem; }
.customer-portal-topbar nav a { color: var(--portal-muted); font-size: 0.82rem; font-weight: 650; text-decoration: none; }
.customer-portal-topbar nav a:hover { color: var(--portal-accent); }
.customer-portal-account {
    overflow: hidden;
    max-width: 220px;
    padding: 0.38rem 0.7rem;
    border: 1px solid var(--portal-line);
    border-radius: 999px;
    color: var(--portal-muted);
    font-size: 0.75rem;
    font-weight: 700;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.customer-portal-shell { width: min(1180px, 92vw); margin: 0 auto; padding: 2.5rem 0 4rem; }
.customer-portal-flash { width: min(1180px, 92vw); margin: 1rem auto 0; padding: 0.8rem 1rem; border: 1px solid #86efac; border-radius: 10px; background: #f0fdf4; color: #166534; }
.customer-portal-flash.error { border-color: #fecaca; background: #fef2f2; color: #991b1b; }
.customer-portal-welcome {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 3rem;
    padding: 1.25rem 0 2.25rem;
}
.customer-portal-welcome > div:first-child { max-width: 680px; }
.customer-portal-welcome span { color: var(--portal-accent); font-size: 0.78rem; font-weight: 750; }
.customer-portal-welcome h1 { margin: 0.3rem 0 0.65rem; color: var(--portal-ink); font-size: 2.35rem; letter-spacing: -0.035em; text-wrap: balance; }
.customer-portal-welcome p { max-width: 65ch; margin: 0; color: var(--portal-muted); font-size: 1rem; line-height: 1.6; }
.customer-portal-next { flex: 0 0 280px; padding: 0.2rem 0 0.2rem 1.5rem; border-left: 1px solid var(--portal-line); }
.customer-portal-next strong,
.customer-portal-next small { display: block; }
.customer-portal-next strong { margin: 0.25rem 0; font-size: 1.3rem; }
.customer-portal-next small { color: var(--portal-muted); line-height: 1.45; }
.customer-portal-actions {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    overflow: hidden;
    margin-bottom: 3rem;
    border: 1px solid var(--portal-line);
    border-radius: 14px;
    background: var(--portal-surface);
}
.customer-portal-actions a { display: flex; align-items: baseline; gap: 0.65rem; padding: 1rem 1.15rem; border-right: 1px solid var(--portal-line); color: var(--portal-ink); text-decoration: none; }
.customer-portal-actions a:last-child { border-right: 0; }
.customer-portal-actions a:hover { background: #f8f6ff; }
.customer-portal-actions strong { color: var(--portal-accent); font-size: 1.25rem; }
.customer-portal-actions span { color: var(--portal-muted); font-size: 0.75rem; }
.customer-portal-section { padding: 2.5rem 0; border-top: 1px solid var(--portal-line); scroll-margin-top: 5rem; }
.customer-portal-section-head { display: flex; align-items: flex-end; justify-content: space-between; margin-bottom: 1.2rem; }
.customer-portal-section-head h2 { margin: 0; color: var(--portal-ink); font-size: 1.45rem; letter-spacing: -0.025em; }
.customer-portal-section-head p { margin: 0.35rem 0 0; color: var(--portal-muted); }
.customer-portal-empty { padding: 2rem 0; color: var(--portal-muted); text-align: center; }
.customer-project-list { display: grid; gap: 0.75rem; }
.customer-project-list article { padding: 1.15rem 1.25rem; border: 1px solid var(--portal-line); border-radius: 12px; background: var(--portal-surface); }
.customer-project-main { display: grid; grid-template-columns: minmax(90px, auto) minmax(0, 1fr) auto; align-items: baseline; gap: 1rem; }
.customer-project-main > span { color: var(--portal-accent); font-size: 0.72rem; font-weight: 800; }
.customer-project-main h3 { margin: 0; overflow: hidden; font-size: 1rem; text-overflow: ellipsis; white-space: nowrap; }
.customer-project-main p { margin: 0; color: var(--portal-muted); font-size: 0.78rem; }
.customer-project-progress { height: 4px; margin: 1.05rem 0 0.55rem; overflow: hidden; border-radius: 999px; background: #ebe9f2; }
.customer-project-progress i { display: block; height: 100%; border-radius: inherit; background: var(--portal-accent); }
.customer-project-steps { display: flex; justify-content: space-between; color: var(--portal-muted); font-size: 0.65rem; }
.customer-portal-records { display: grid; gap: 0.6rem; }
.customer-portal-records > article {
    display: grid;
    grid-template-columns: 2.6rem minmax(0, 1fr) auto auto;
    align-items: center;
    gap: 0.9rem;
    padding: 0.9rem 1rem;
    border: 1px solid var(--portal-line);
    border-radius: 12px;
    background: var(--portal-surface);
}
.customer-record-icon { display: grid; width: 2.5rem; height: 2.5rem; place-items: center; border-radius: 9px; background: #f0ebff; color: var(--portal-accent); font-weight: 800; }
.customer-portal-records h3,
.customer-portal-records p { margin: 0; }
.customer-portal-records article > div:nth-child(2) > span { color: var(--portal-muted); font-size: 0.68rem; font-weight: 700; }
.customer-portal-records h3 { margin: 0.12rem 0; font-size: 0.95rem; }
.customer-portal-records p { color: var(--portal-muted); font-size: 0.76rem; }
.customer-record-actions { display: flex; gap: 0.45rem; }
.customer-record-decision { grid-column: 2 / -1; padding-top: 0.7rem; border-top: 1px solid var(--portal-line); }
.customer-record-decision summary { width: fit-content; color: var(--portal-accent); cursor: pointer; font-size: 0.78rem; font-weight: 750; }
.customer-record-decision form { display: grid; grid-template-columns: minmax(160px, 0.7fr) minmax(220px, 1fr) auto; align-items: end; gap: 0.7rem; margin-top: 0.8rem; }
.customer-record-decision label { display: flex; flex-direction: column; gap: 0.3rem; color: var(--portal-muted); font-size: 0.7rem; }
.customer-record-decision form > div { display: flex; gap: 0.4rem; }
.customer-record-confirmed { grid-column: 2 / -1; padding-top: 0.5rem; border-top: 1px solid var(--portal-line); color: #15803d !important; }
.portal-badge { display: inline-flex; width: fit-content; padding: 0.28rem 0.52rem; border-radius: 999px; background: #eef2ff; color: #4338ca; font-size: 0.68rem; font-style: normal; font-weight: 750; white-space: nowrap; }
.portal-badge.is-success { background: #dcfce7; color: #166534; }
.portal-badge.is-warning { background: #fef3c7; color: #92400e; }
.portal-badge.is-danger { background: #fee2e2; color: #991b1b; }
.customer-appointment-list { display: grid; gap: 0.5rem; }
.customer-appointment-list > article { display: grid; grid-template-columns: 3.2rem minmax(0, 1fr) auto; align-items: center; gap: 1rem; padding: 0.8rem 1rem; border-bottom: 1px solid var(--portal-line); }
.customer-appointment-list time { text-align: center; }
.customer-appointment-list time strong,
.customer-appointment-list time span { display: block; }
.customer-appointment-list time strong { font-size: 1.25rem; }
.customer-appointment-list time span { color: var(--portal-muted); font-size: 0.68rem; text-transform: uppercase; }
.customer-appointment-list h3,
.customer-appointment-list p { margin: 0; }
.customer-appointment-list h3 { font-size: 0.95rem; }
.customer-appointment-list p { margin-top: 0.2rem; color: var(--portal-muted); font-size: 0.75rem; }
.customer-appointment-list details { position: relative; }
.customer-appointment-list summary { color: var(--portal-accent); cursor: pointer; font-size: 0.75rem; font-weight: 750; }
.customer-appointment-list details form { display: grid; gap: 0.45rem; width: min(330px, 80vw); margin-top: 0.7rem; padding: 0.75rem; border: 1px solid var(--portal-line); border-radius: 10px; background: #fff; }
.customer-appointment-list details form > div { display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem; }
.customer-document-list { overflow: hidden; border: 1px solid var(--portal-line); border-radius: 12px; background: var(--portal-surface); }
.customer-document-list > a { display: grid; grid-template-columns: 1.5rem minmax(0, 1fr) auto 1.2rem; align-items: center; gap: 0.8rem; padding: 0.85rem 1rem; border-bottom: 1px solid var(--portal-line); color: var(--portal-ink); text-decoration: none; }
.customer-document-list > a:last-child { border-bottom: 0; }
.customer-document-list > a:hover { background: #f8f6ff; }
.customer-document-list strong,
.customer-document-list small { display: block; }
.customer-document-list small { margin-top: 0.15rem; color: var(--portal-muted); }
.customer-document-list em { color: var(--portal-muted); font-size: 0.7rem; font-style: normal; }
.customer-service-layout { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(280px, 0.6fr); gap: 2rem; }
.customer-service-form { display: grid; gap: 0.75rem; padding: 1rem; border: 1px solid var(--portal-line); border-radius: 12px; background: var(--portal-surface); }
.customer-service-form label { display: flex; flex-direction: column; gap: 0.3rem; color: var(--portal-muted); font-size: 0.72rem; font-weight: 650; }
.customer-service-form > div { display: grid; grid-template-columns: 1fr 1fr; gap: 0.7rem; }
.customer-service-form > .btn { justify-self: start; }
.customer-service-layout aside { padding-top: 3.5rem; }
.customer-service-layout aside h3 { margin: 0 0 0.8rem; }
.customer-service-layout aside > p { color: var(--portal-muted); }
.customer-service-layout aside article { padding: 0.65rem 0; border-bottom: 1px solid var(--portal-line); }
.customer-service-layout aside article span,
.customer-service-layout aside article strong,
.customer-service-layout aside article small { display: block; }
.customer-service-layout aside article span { color: var(--portal-accent); font-size: 0.65rem; font-weight: 750; }
.customer-service-layout aside article small { margin-top: 0.2rem; color: var(--portal-muted); }
.customer-message-thread { display: flex; max-height: 560px; overflow-y: auto; flex-direction: column; gap: 0.65rem; padding: 1rem; border: 1px solid var(--portal-line); border-radius: 12px 12px 0 0; background: #fff; }
.customer-message-thread article { width: min(72%, 650px); padding: 0.75rem 0.85rem; border-radius: 12px; background: #f0eff5; }
.customer-message-thread article.is-own { align-self: flex-end; background: #eee8ff; }
.customer-message-thread article > div { display: flex; justify-content: space-between; gap: 1rem; }
.customer-message-thread strong { font-size: 0.74rem; }
.customer-message-thread time { color: var(--portal-muted); font-size: 0.65rem; }
.customer-message-thread p { margin: 0.4rem 0 0; line-height: 1.5; }
.customer-message-thread img { display: block; width: min(320px, 100%); max-height: 260px; margin-top: 0.6rem; border-radius: 8px; object-fit: cover; }
.customer-message-file { display: inline-flex; margin-top: 0.5rem; color: var(--portal-accent); font-size: 0.75rem; }
.customer-message-form { display: grid; gap: 0.55rem; padding: 0.8rem; border: 1px solid var(--portal-line); border-top: 0; border-radius: 0 0 12px 12px; background: #fff; }
.customer-message-form > div { display: grid; grid-template-columns: 1fr 1fr; gap: 0.55rem; }
.customer-message-form > div:last-child { grid-template-columns: 1fr auto; }
.customer-portal-footer { display: flex; justify-content: space-between; gap: 1rem; padding: 1.25rem 4vw; border-top: 1px solid var(--portal-line); color: var(--portal-muted); font-size: 0.7rem; }
.portal-invalid { width: min(520px, 90vw); margin: 15vh auto; padding: 2rem; border: 1px solid var(--portal-line); border-radius: 14px; background: #fff; text-align: center; }

.portal-admin-intro,
.portal-manage-head { align-items: flex-end; }
.portal-admin-count,
.portal-state { display: inline-flex; width: fit-content; padding: 0.3rem 0.6rem; border-radius: 999px; background: color-mix(in srgb, #94a3b8 15%, transparent); color: #94a3b8; font-size: 0.7rem; font-weight: 750; white-space: nowrap; }
.portal-state.is-active { background: color-mix(in srgb, #22c55e 15%, transparent); color: #22c55e; }
.portal-admin-summary { display: flex; margin: 1rem 0; overflow: hidden; border: 1px solid var(--border-line); border-radius: 12px; background: var(--surface); }
.portal-admin-summary > div { display: flex; flex: 1; align-items: baseline; gap: 0.55rem; padding: 0.85rem 1rem; border-right: 1px solid var(--border-line); }
.portal-admin-summary > div:last-child { border-right: 0; }
.portal-admin-summary strong { font-size: 1.2rem; }
.portal-admin-summary span { color: var(--text-muted); font-size: 0.75rem; }
.portal-admin-directory { padding: 0; overflow: hidden; }
.portal-admin-head { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1rem; border-bottom: 1px solid var(--border-line); }
.portal-admin-head h2,
.portal-admin-head p { margin: 0; }
.portal-admin-head p { margin-top: 0.2rem; color: var(--text-muted); }
.portal-admin-search { display: flex; align-items: center; gap: 0.45rem; width: min(300px, 100%); }
.portal-admin-list article { display: grid; grid-template-columns: 2.4rem minmax(0, 1fr) auto auto; align-items: center; gap: 0.8rem; min-height: 4.25rem; padding: 0.65rem 1rem; border-bottom: 1px solid var(--border-line); }
.portal-admin-list article:last-child { border-bottom: 0; }
.portal-admin-list strong,
.portal-admin-list small { display: block; }
.portal-admin-list small { margin-top: 0.15rem; color: var(--text-muted); }
.portal-customer-avatar { display: grid; width: 2.25rem; height: 2.25rem; place-items: center; border-radius: 50%; background: color-mix(in srgb, #7c3aed 14%, transparent); color: #a78bfa; font-size: 0.7rem; font-weight: 800; }
.portal-manage-head { display: flex; justify-content: space-between; gap: 1rem; margin-bottom: 1rem; }
.portal-manage-head h1 { margin: 0.35rem 0 0.2rem; }
.portal-manage-head p { margin: 0; color: var(--text-muted); }
.portal-access-panel { display: grid; grid-template-columns: minmax(180px, 0.5fr) minmax(320px, 1.5fr); align-items: center; gap: 1rem; }
.portal-access-panel h2,
.portal-access-panel p { margin: 0; }
.portal-access-panel p { margin-top: 0.2rem; }
.portal-link-copy { display: flex; gap: 0.5rem; }
.portal-link-copy input { min-width: 0; }
.portal-access-actions { display: flex; grid-column: 2; gap: 0.5rem; justify-content: flex-end; }
.portal-review-panel { margin-top: 1rem; }
.portal-review-columns { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; }
.portal-review-columns h3 { margin: 0 0 0.45rem; font-size: 0.85rem; }
.portal-review-columns article { display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; padding: 0.55rem 0; border-top: 1px solid var(--border-line); }
.portal-review-columns strong,
.portal-review-columns small { display: block; }
.portal-review-columns small { margin-top: 0.1rem; color: var(--text-muted); }
.portal-manage-grid { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(320px, 0.85fr); gap: 1rem; margin-top: 1rem; }
.portal-manage-messages { display: flex; max-height: 440px; overflow-y: auto; flex-direction: column; gap: 0.5rem; }
.portal-manage-messages article { width: min(82%, 560px); padding: 0.65rem 0.75rem; border-radius: 10px; background: color-mix(in srgb, #94a3b8 10%, var(--surface)); }
.portal-manage-messages article.is-staff { align-self: flex-end; background: color-mix(in srgb, #7c3aed 11%, var(--surface)); }
.portal-manage-messages article > div { display: flex; justify-content: space-between; gap: 1rem; }
.portal-manage-messages p { margin: 0.35rem 0; }
.portal-manage-messages small { color: var(--text-muted); }
.portal-manage-photo { display: block; width: min(240px, 100%); margin-top: 0.5rem; }
.portal-manage-photo img { display: block; width: 100%; max-height: 190px; border-radius: 8px; object-fit: cover; }
.portal-reply-form { display: grid; gap: 0.55rem; margin-top: 0.75rem; padding-top: 0.75rem; border-top: 1px solid var(--border-line); }
.portal-reply-form > div { display: flex; align-items: center; justify-content: space-between; gap: 0.6rem; }
.portal-request-panel > article { position: relative; padding: 0.75rem 0; border-top: 1px solid var(--border-line); }
.portal-request-panel > article:first-of-type { border-top: 0; }
.portal-request-panel article p { margin: 0.35rem 0; }
.portal-request-panel article small { color: var(--text-muted); }
.portal-decision-form { display: grid; grid-template-columns: minmax(120px, 1fr) auto auto; gap: 0.4rem; margin-top: 0.55rem; }
.portal-publications { margin-top: 1rem; }
.portal-file-list article { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 0.65rem 0; border-top: 1px solid var(--border-line); }
.portal-file-list strong,
.portal-file-list small { display: block; }
.portal-file-list small { margin-top: 0.15rem; color: var(--text-muted); }

@media (max-width: 900px) {
    .customer-portal-topbar nav { display: none; }
    .customer-portal-account { margin-left: auto; }
    .customer-portal-actions { grid-template-columns: 1fr 1fr; }
    .customer-portal-actions a:nth-child(2) { border-right: 0; }
    .customer-portal-actions a:nth-child(n+3) { border-top: 1px solid var(--portal-line); }
    .customer-service-layout,
    .portal-manage-grid { grid-template-columns: 1fr; }
    .customer-service-layout aside { padding-top: 0; }
    .portal-access-panel { grid-template-columns: 1fr; }
    .portal-access-actions { grid-column: 1; }
    .portal-review-columns { grid-template-columns: 1fr; }
}
@media (max-width: 650px) {
    .customer-portal-topbar { min-height: 3.7rem; padding: 0 1rem; }
    .customer-portal-brand strong { display: none; }
    .customer-portal-account { max-width: 180px; }
    .customer-portal-shell { width: min(100% - 1.4rem, 1180px); padding-top: 1.2rem; }
    .customer-portal-welcome { align-items: flex-start; flex-direction: column; gap: 1.25rem; }
    .customer-portal-welcome h1 { font-size: 1.75rem; }
    .customer-portal-next { width: 100%; flex-basis: auto; padding: 0.75rem 0 0; border-top: 1px solid var(--portal-line); border-left: 0; }
    .customer-portal-actions a { align-items: flex-start; flex-direction: column; gap: 0.1rem; }
    .customer-portal-section { padding: 1.8rem 0; }
    .customer-project-main { grid-template-columns: 1fr auto; }
    .customer-project-main > span { grid-column: 1 / -1; }
    .customer-project-main h3 { white-space: normal; }
    .customer-portal-records > article { grid-template-columns: 2.4rem minmax(0, 1fr) auto; }
    .customer-record-actions { grid-column: 2 / -1; }
    .customer-record-decision { grid-column: 1 / -1; }
    .customer-record-decision form { grid-template-columns: 1fr; }
    .customer-appointment-list > article { grid-template-columns: 2.8rem minmax(0, 1fr); }
    .customer-appointment-list > article > :last-child { grid-column: 2; justify-self: start; }
    .customer-document-list > a { grid-template-columns: 1.25rem minmax(0, 1fr) 1rem; }
    .customer-document-list em { display: none; }
    .customer-service-form > div,
    .customer-message-form > div { grid-template-columns: 1fr; }
    .customer-message-thread article { width: 88%; }
    .customer-portal-footer { flex-direction: column; }
    .portal-admin-summary { flex-direction: column; }
    .portal-admin-summary > div { border-right: 0; border-bottom: 1px solid var(--border-line); }
    .portal-admin-head,
    .portal-manage-head { align-items: flex-start; flex-direction: column; }
    .portal-admin-search { width: 100%; }
    .portal-admin-list article { grid-template-columns: 2.4rem minmax(0, 1fr) auto; }
    .portal-admin-list article form,
    .portal-admin-list article > .btn { grid-column: 2 / -1; justify-self: start; }
    .portal-link-copy,
    .portal-access-actions,
    .portal-reply-form > div,
    .portal-file-list article { align-items: stretch; flex-direction: column; }
    .portal-decision-form { grid-template-columns: 1fr 1fr; }
    .portal-decision-form input { grid-column: 1 / -1; }
}
@media (prefers-reduced-motion: reduce) {
    .customer-portal-topbar *,
    .customer-portal-shell * { scroll-behavior: auto; transition: none !important; }
}
