/* Foundation */
:root {--blue: #0065ad; --blue-dark: #004f88; --blue-soft: #eaf4fb; --ink: #203649;
	--muted: #536b7d; --border: #c8d5df; --background: #f4f7fa; --white: #fff;
	font-family: "Fira Sans", "Segoe UI", Arial, sans-serif; color: var(--ink); font-size: 16px;}
body {background: var(--background); line-height: 1.55;}
a {color: var(--blue); text-decoration: none;}
a:hover {text-decoration: underline;}
button, .button {display: inline-flex; align-items: center; justify-content: center; gap: 8px;
	min-height: 39px; padding: 9px 15px; border: 1px solid var(--border); border-radius: 5px;
	background: #fff; color: var(--blue); font-size: 15px; font-weight: 650; cursor: pointer; text-decoration: none;}
button:hover, .button:hover {background: #f0f6fb; border-color: #b8cddd; text-decoration: none;}
button.primary, .button.primary {background: var(--blue); border-color: var(--blue); color: #fff;}
button.primary:hover, .button.primary:hover {background: var(--blue-dark);}
button:disabled {opacity: .55; cursor: default;}
.quiet {border-color: transparent; background: transparent; padding: 5px 8px; min-height: 30px;}
.small-button {padding: 6px 10px; min-height: 32px; font-size: 15px;}
input, select, textarea {width: 100%; min-width: 0; color: var(--ink); background: #fff;
	border: 1px solid #a8bbcb; border-radius: 6px; padding: 11px 12px; outline-offset: 2px; font-weight: 400;}
textarea {resize: vertical; line-height: 1.65;}
input[type="checkbox"] {width: 22px; height: 22px; padding: 0; accent-color: var(--blue); flex-shrink: 0;}
:focus-visible {outline: 2px solid var(--blue); outline-offset: 3px;}
label {display: flex; flex-direction: column; gap: 8px; font-size: 15px; font-weight: 500; color: #263f51;}
label small, .field-help {font-weight: 400; color: var(--muted); font-size: 14px;}
h1 {font-size: clamp(25px, 2.3vw, 34px); letter-spacing: -.9px; line-height: 1.2; margin-bottom: 12px; font-weight: 700;}
h2 {font-size: 22px; line-height: 1.35; margin-bottom: 0; letter-spacing: -.3px;}
h3 {font-size: 18px; margin-bottom: 8px;}
p {margin-bottom: 14px;}
small {font-size: 14px;}
svg {width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.6;
	stroke-linecap: round; stroke-linejoin: round; flex-shrink: 0;}
.icon-library {position: absolute; width: 0; height: 0; overflow: hidden;}
.sr-only {position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%);}
.skip-link {position: absolute; top: -100px; left: 12px; z-index: 10; background: white; padding: 12px;}
.skip-link:focus {top: 12px;}
.muted {color: var(--muted); font-size: 15px;}

/* Navigation and page frame */
.app-header {background: #fff; border-bottom: 1px solid var(--border);}
.header-inner {max-width: 1560px; margin: auto; padding: 0 38px; min-height: 83px;
	display: flex; align-items: center; gap: 38px;}
.brand {display: flex; align-items: center; gap: 15px; flex-shrink: 0; color: var(--ink);}
.brand:hover {text-decoration: none;}
.brand-mark {font-family: Georgia, serif; font-weight: 700; font-size: 29px; color: var(--blue); letter-spacing: -2px;}
.brand-product {border-left: 1px solid var(--border); padding-left: 15px; font-size: 21px; font-weight: 650; letter-spacing: -.7px;}
.main-nav {display: flex; align-self: stretch; gap: 5px; flex: 1;}
.main-nav a {display: flex; align-items: center; gap: 7px; color: #64798a; font-size: 15px;
	font-weight: 600; padding: 0 12px; border-bottom: 3px solid transparent; white-space: nowrap;}
.main-nav svg {width: 17px; height: 17px;}
.main-nav a:hover {text-decoration: none; color: var(--blue); background: #f9fbfd;}
.main-nav [aria-current] {border-bottom-color: var(--blue); color: var(--blue); background: #f8fbfd;}
.workspace {max-width: 1484px; padding: 23px 38px 50px; margin: auto; min-height: calc(100vh - 155px);}
.breadcrumb {font-size: 14px; color: var(--muted); margin-bottom: 28px;}
.breadcrumb span {margin: 0 10px; color: #b7c4ce;}
.page-heading {display: flex; justify-content: space-between; gap: 20px; align-items: center; margin-bottom: 27px;}
.page-heading > div > p:last-child {color: var(--muted); margin-bottom: 0; font-size: 15px;}
.eyebrow {color: var(--blue); font-size: 14px; font-weight: 750; letter-spacing: 1.5px; margin-bottom: 10px;}
.app-footer {max-width: 1408px; margin: auto; padding: 20px 0; display: flex; justify-content: space-between;
	border-top: 1px solid var(--border); color: #8493a1; font-size: 14px;}
.footer-dot {padding: 0 7px;}

/* Anmeldung und Passwort zurücksetzen */
.auth-layout {width: min(100%, 480px); margin: clamp(36px, 8vh, 100px) auto; padding: 34px 38px 38px;}
.auth-layout .eyebrow {margin-bottom: 8px;}
.auth-layout h1 {margin-bottom: 8px;}
.auth-layout > .muted {margin-bottom: 28px;}
.auth-form {display: grid; gap: 9px;}
.auth-form label:not(:first-child) {margin-top: 10px;}
.auth-form .field-help {margin: 0;}
.auth-actions {display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 16px; margin-top: 18px;}
.auth-actions a {font-size: 14px; font-weight: 600;}
.auth-message {padding: 12px 14px; border: 1px solid #d7b5ad; border-radius: 5px; background: #fff4f1; color: #8d3328; font-size: 14px;}

/* Cards, metrics and tables */
.panel {background: #fff; border: 1px solid var(--border); border-radius: 7px;
	box-shadow: 0 2px 5px #22384a04; min-width: 0; overflow: hidden;}
.panel-heading {display: flex; align-items: center; justify-content: space-between; gap: 16px;
	padding: 21px 23px; border-bottom: 1px solid #edf1f5;}
.panel-heading p {font-size: 14px; color: var(--muted); margin: 4px 0 0;}
.panel-heading .eyebrow {color: var(--blue); font-size: 14px; margin: 0 0 5px;}
.text-link {font-size: 14px; font-weight: 650; white-space: nowrap;}
.stat-grid {display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin-bottom: 25px;}
.stat-card {background: #fff; border: 1px solid var(--border); border-radius: 6px; padding: 20px 22px;}
.stat-card:first-child {border-top: 2px solid var(--blue); padding-top: 19px;}
.stat-heading {display: flex; align-items: center; justify-content: space-between; color: #657a8b; font-size: 15px; font-weight: 600;}
.stat-heading svg {color: #92adbf; width: 19px; height: 19px;}
.stat-card > strong {font-size: 32px; letter-spacing: -1px; display: block; line-height: 1.1; margin: 12px 0 8px;}
.stat-card:first-child > strong {color: var(--blue);}
.stat-card small {color: var(--muted); font-size: 14px;}
.dashboard-grid {display: grid; grid-template-columns: minmax(0, 1fr); gap: 23px;}
.week-strip {display: grid; grid-template-columns: repeat(7, 1fr); gap: 8px; padding: 18px 23px; border-bottom: 1px solid #edf1f5;}
.week-strip a {background: #f5f7fa; border: 1px solid #e9eef3; border-radius: 4px; text-align: center; padding: 10px 3px; color: var(--ink);}
.week-strip a:hover {text-decoration: none; border-color: #94bddb;}
.week-strip span {display: block; color: var(--muted); font-size: 14px;}
.week-strip strong {display: block; font-size: 18px; margin: 3px 0;}
.week-strip small {font-size: 14px; color: var(--muted);}
.week-strip .today {background: var(--blue-soft); border-color: #8ebce0; color: var(--blue);}
.week-strip .selected {border-color: var(--blue); box-shadow: 0 0 0 1px var(--blue);}
.week-strip.with-arrows {grid-template-columns: 36px repeat(7, minmax(0, 1fr)) 36px; align-items: stretch;}
.week-arrow {width: 36px; min-height: 0; padding: 0; border-color: #d4e1eb; background: #f6f9fc;
	font-size: 24px; color: var(--blue);}
.week-panel {margin-bottom: 18px;}
.week-panel .week-strip {border-bottom: 0;}
.empty-state {padding: 52px 24px; text-align: center;}
.empty-state p {font-size: 15px; color: var(--muted); line-height: 1.9;}
.empty-state h3 {margin: 17px 0 8px; font-size: 17px;}
.empty-state h2 {margin: 15px 0 10px;}
.empty-icon {display: inline-grid; place-items: center; width: 52px; height: 52px; border: 1px solid #dce9f2;
	border-radius: 12px; background: #f4f9fd; color: var(--blue);}
.empty-icon svg {width: 25px; height: 25px;}
.empty-inline {padding: 27px 23px; font-size: 15px; color: var(--muted); margin: 0;}
.recent-panel {margin-top: 25px;}
.table-scroll {overflow: auto;}
table {border-collapse: collapse; width: 100%; font-size: 15px;}
th {text-align: left; color: var(--muted); background: #f7f9fb; font-size: 14px; font-weight: 650; padding: 12px 20px; white-space: nowrap;}
td {padding: 16px 20px; border-top: 1px solid #edf1f5;}
td a {font-weight: 650;}
td small {display: block; color: var(--muted); margin-top: 4px; font-size: 14px;}
.badge {display: inline-block; background: #edf4fa; color: #47728f; font-size: 14px; padding: 3px 7px; border-radius: 4px;}
.count-label {color: var(--muted); font-size: 15px; font-weight: 500; margin-left: 7px;}

/* Forms and management */
.form-grid {display: grid; grid-template-columns: 1fr 1fr; gap: 15px;}
.form-grid.three {grid-template-columns: 2fr 1fr 1fr;}
.import-form input:not([type="file"]), .import-form select,
.single-service-form input:not([type="hidden"]), .single-service-form select {
	height: 48px; box-sizing: border-box; padding: 10px 12px;
}
.import-history-action {width: 54px; text-align: right;}
.trash-icon {width: 34px; height: 34px; min-height: 34px; padding: 7px; color: var(--muted);}
.trash-icon:hover, .trash-icon:focus-visible {color: #a0352b; background: #fff4f1;}
.trash-icon svg {display: block; width: 18px; height: 18px;}
.table-row-actions {display: inline-flex; align-items: center; justify-content: center; gap: 3px; white-space: nowrap; vertical-align: middle;}
.location-row-actions {white-space: nowrap; text-align: center;}
#location-table th:last-child, #location-table td:last-child {width: 86px; text-align: center;}
.import-form {padding: 27px;}
.import-setting {position: relative; display: flex; flex-direction: column; gap: 8px; min-width: 0;}
.import-setting-heading {display: flex; align-items: center; gap: 7px;}
.import-help summary {display: grid; place-items: center; width: 18px; height: 18px; list-style: none;
	border: 1px solid #a8bbcb; border-radius: 50%; color: var(--muted); font-size: 12px; line-height: 1;}
.import-help summary::-webkit-details-marker {display: none;}
.import-help[open] summary {color: var(--blue); border-color: var(--blue); background: var(--blue-soft);}
.import-help p {position: absolute; top: 30px; left: 0; z-index: 3; width: min(280px, 100%);
	margin: 0; padding: 12px 14px; background: #fff; border: 1px solid var(--border); border-radius: 6px;
	box-shadow: 0 4px 16px #20364926; color: var(--ink); font-size: 14px; font-weight: 400; line-height: 1.5;}
.import-form .form-status {margin: 10px 0 0; font-size: 14px;}
.import-form .form-status:empty, .import-file-list:empty {display: none;}
.import-text-field {margin-top: 22px;}
.import-text-field > label {margin-bottom: 8px;}
.field-help {line-height: 1.7; margin: 10px 0 0;}
.upload-controls {display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin-top: 12px;}
.upload-picker {display: flex; align-items: center; gap: 12px; min-width: 0;}
.upload-picker .upload-button {flex-shrink: 0;}
.import-actions {display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-left: auto;}
.upload-help {font-size: 14px; color: var(--muted);}
.upload-button {cursor: pointer; font-weight: 650; color: var(--blue);}
#import-files {position: absolute; width: 1px; height: 1px; opacity: 0; overflow: hidden;}
.upload-controls:has(#import-files:focus-visible) .upload-button {outline: 2px solid var(--blue); outline-offset: 3px;}
.import-file-list {list-style: none; margin: 8px 0 0; padding: 0; display: grid; gap: 6px;}
.import-file-list li {display: flex; align-items: center; justify-content: space-between; gap: 12px;
	padding: 8px 12px; border: 1px solid var(--border); border-radius: 6px; background: #f7fafc;}
.import-dropzone {position: relative;}
#import-text {display: block;}
.import-drop-hint {display: none; position: absolute; inset: 0; z-index: 1; border: 2px dashed var(--blue);
	border-radius: 6px; background: #e9f4fcf5; color: var(--blue); font-size: 22px; font-weight: 650;
	align-items: center; justify-content: center; flex-direction: column; gap: 8px;}
.import-drop-hint small {font-size: 15px; font-weight: 400;}
.import-dropzone.drag-active .import-drop-hint {display: flex;}
.import-dropzone.drag-active textarea {pointer-events: none;}
.import-form[aria-busy="true"] .upload-button {pointer-events: none; opacity: .6;}
.form-actions {display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-top: 22px;}
.form-actions p {margin: 0; font-size: 14px; color: var(--muted);}
.form-status {font-size: 15px; margin: 14px 0 0; color: var(--blue); white-space: pre-wrap;}
.form-status.error {color: #a0352b;}
.step-label {font-size: 14px; letter-spacing: .6px; color: var(--blue); white-space: nowrap;}
.step-label span {color: #94a3af; margin-left: 12px;}
.management-grid {display: grid; grid-template-columns: minmax(0, 1fr) minmax(390px, 440px); align-items: start; gap: 24px;}
.import-form, .detail-form {border-color: #bfceda; box-shadow: 0 3px 12px #1a364808;}
.import-form label, .detail-form label {color: #203649;}
.import-form input:focus, .import-form textarea:focus, .import-form select:focus,
.detail-form input:focus, .detail-form textarea:focus, .detail-form select:focus {
	border-color: var(--blue); box-shadow: 0 0 0 3px #0065ad19;
}
.detail-form {padding: 24px; display: flex; flex-direction: column; gap: 16px;}
.detail-form h2 {margin-bottom: 5px;}
.detail-form-heading {display: flex; align-items: center; justify-content: space-between; gap: 12px;}
.detail-form-heading h2 {margin: 0;}
.detail-form-heading button {flex-shrink: 0;}
.detail-form #location-research-result {margin: 0; border: 1px solid #d5e5f2; background: #f5faff;}
.detail-form #location-research-result .field-help {margin: 0 0 8px;}
.detail-form .form-actions {margin-top: 0;}
.check-label {flex-direction: row; align-items: center; gap: 9px; font-weight: 500;}
.source-list {display: grid; gap: 15px;}
.source-card {padding: 0;}
.source-card-body {padding: 19px 24px 17px;}
.source-card header {margin-bottom: 9px;}
.source-card p {font-size: 15px; color: var(--muted);}
.source-card h2 {margin: 0 0 2px; line-height: 1.3;}
.source-card h2 a, .source-card h2 a:hover, .source-card h2 a:focus-visible {color: inherit; text-decoration: none;}
.source-url {overflow-wrap: anywhere; margin: 0 0 8px;}
.source-url a, .source-url a:hover, .source-url a:focus-visible {color: var(--muted); text-decoration: none;}
.source-card-meta {margin: 0;}
.source-card .inline-warning {margin: 15px 0 0; padding: 9px 12px; border-left: 3px solid #dfb567; color: #8b672d;}
.source-card .form-status {margin: 14px 0 0; color: var(--blue);}
.source-card-footer {display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px;
	padding: 10px 20px 10px 18px; border-top: 1px solid #edf1f5;}
.source-card-actions {display: inline-flex; align-items: center; gap: 3px;}
.panel-heading input[type="search"] {max-width: 220px; font-size: 15px;}
.info-banner {border: 1px solid #d5e5f2; background: #ecf5fc; border-radius: 5px; padding: 14px 18px;
	display: flex; gap: 15px; color: #486c87; font-size: 15px; margin-bottom: 22px;}
details pre {white-space: pre-wrap; overflow-wrap: anywhere; font-size: 15px; max-height: 400px; overflow: auto;}
summary {cursor: pointer; font-size: 15px; font-weight: 650;}
.original-source {padding: 16px 22px; margin-bottom: 20px;}
.completed-import > h2 {padding: 21px 23px 0;}
.completed-import > p {padding: 0 23px; margin: 8px 0 18px;}
.completed-import > .button {margin: 20px 23px 23px;}

/* Filters and export workspace */
.smart-filters {display: grid; grid-template-columns: 160px 210px minmax(0, 1fr);
	align-items: center; gap: 10px; padding: 12px 15px; margin-bottom: 18px;}
.smart-filters > select {width: 100%; min-width: 0; height: 42px; padding: 7px 10px; font-size: 15px;}
.smart-filters .ressort-filter {grid-column: 1 / -1; grid-row: 2; width: 100%; min-width: 0; max-width: none;
	border: 0; padding: 2px; margin: 0;}
.smart-filters .day-controls {grid-column: 3; grid-row: 1;}
.smart-filters .ressort-choice {min-height: 38px; font-size: 15px;}
.day-controls {display: flex; align-items: center; gap: 6px; justify-content: flex-end;}
.day-controls input[type="date"] {width: 150px; height: 40px; padding: 6px 10px; font-size: 14px;
	border-color: #c7d6e3; border-radius: 7px; background: #fff;}
.day-controls .range-label {color: var(--muted); font-size: 14px;}
.quick-days {display: flex; gap: 3px; margin-right: 9px; padding: 3px; border: 1px solid #d9e4ed;
	border-radius: 8px; background: #f6f9fc;}
.quick-day {min-height: 32px; padding: 5px 9px; border: 0; border-radius: 5px;
	background: transparent; color: #46647a; font-size: 13px; font-weight: 600; cursor: pointer;}
.quick-day:hover, .quick-day:focus-visible {background: #e3f0fa; color: var(--blue);}
.day-controls [hidden] {display: none;}
.cue-workspace {display: grid; grid-template-columns: minmax(0, 1.7fr) minmax(300px, .8fr);
	gap: 18px; align-items: start;}
[v-cloak] {display: none !important;}
.cue-preview-panel {position: sticky; top: 20px; min-width: 0;}
.cue-preview {padding: 18px 22px; min-height: 260px; max-height: 68vh; overflow: auto;
	font-size: 16px; line-height: 1.7; color: #29465b;}
.cue-group + .cue-group {margin-top: 26px; border-top: 1px solid var(--border); padding-top: 22px;}
.cue-group h3 {font-size: 21px; line-height: 1.25; color: var(--blue); margin: 0 0 14px;}
.cue-group h4 {font-size: 16px; color: #314f65; margin: 18px 0 7px;}
.cue-group p {white-space: pre-wrap; margin: 0; overflow-wrap: anywhere;}
.cue-placeholder {color: var(--muted);}
.cue-preview-panel #cue-text {position: absolute; width: 1px; height: 1px; min-height: 0;
	padding: 0; border: 0; opacity: 0; pointer-events: none;}
.system-list {margin-top: 0;}
.system-table {font-size: 15px;}
.system-table th, .system-table td {padding: 12px 14px; vertical-align: middle;}
.system-table td small {display: block; margin-top: 3px; color: var(--muted);}
.system-table td:last-child, .system-table th:last-child {width: 86px; text-align: center;}
.single-service-form {max-width: 940px; padding: 0; overflow: visible;}
.service-form-section {padding: 26px 30px;}
.service-form-section + .service-form-section {border-top: 1px solid #e4ecf2;}
.service-form-section-heading {display: flex; align-items: flex-start; gap: 13px; margin-bottom: 20px;}
.service-form-section-heading h2 {font-size: 20px; margin: 0 0 2px;}
.service-form-section-heading p {color: var(--muted); font-size: 14px; margin: 0;}
.service-form-number {display: grid; place-items: center; flex: 0 0 34px; height: 34px;
	border-radius: 7px; background: var(--blue-soft); color: var(--blue); font-size: 14px; font-weight: 750;}
.single-service-form .form-grid {gap: 16px;}
.service-time-grid {grid-template-columns: 1fr 1fr 1fr;}
.service-location-grid {grid-template-columns: minmax(0, 1fr) minmax(0, 1.5fr);}
.service-kind-field {max-width: 100%; margin-top: 20px;}
.service-kind-field > label:first-child {margin-bottom: 8px;}
.service-kind-field .custom-kind {max-width: 100%;}
.service-form-section > .field-help {margin: 7px 0 0;}
.service-notes {margin-top: 20px;}
.service-notes textarea {min-height: 110px;}
.single-service-actions {display: flex; align-items: center; gap: 15px; margin: 0;
	padding: 20px 30px; border-top: 1px solid #e4ecf2; background: #f8fbfd; border-radius: 0 0 7px 7px;}
.single-service-actions .form-status {margin: 0;}
.service-delete {margin-left: auto; color: #a0352b;}
.service-delete:hover {color: #83271f; background: #fff4f1;}
.single-service-actions a {font-size: 15px;}
.filter-bar {padding: 14px 18px; margin-bottom: 18px;}
.filter-main {display: flex; align-items: center; flex-wrap: wrap; gap: 10px;}
.filter-main input[type="date"] {width: 175px; min-height: 42px; padding: 8px 10px;}
.filter-main .range-toggle {width: auto; flex-direction: row; align-items: center;
	gap: 7px; margin: 0 7px 0 2px; font-weight: 500; white-space: nowrap;}
.filter-main .range-toggle input {width: 17px; height: 17px; margin: 0;}
.filter-main .filter-submit {margin-left: auto; min-height: 42px;}
.ressort-filter {display: flex; align-items: center; flex-wrap: wrap; gap: 7px;
	width: 100%; min-width: 0; max-width: 100%;
	border: 0; border-top: 1px solid var(--border); padding: 11px 0 0; margin: 12px 0 0;}
.ressort-choice {display: inline-flex; flex: none; position: relative; flex-direction: row; align-items: center; gap: 6px;
	width: auto; min-height: 34px; padding: 5px 11px; border: 1px solid #c7d4df;
	border-radius: 5px; background: #f7f9fb; color: #40596d;
	font-size: 14px; font-weight: 600; white-space: nowrap; cursor: pointer;}
.ressort-choice input {position: absolute; inset: 0; width: 100%; height: 100%;
	margin: 0; opacity: 0; cursor: pointer;}
.ressort-choice:has(input:checked) {border-color: var(--blue); background: var(--blue-soft); color: var(--blue);}
.ressort-count {display: inline-block; flex: none; min-width: 18px; padding: 1px 5px;
	border-radius: 9px; background: #fff; color: #536b7d; font-size: 12px;
	line-height: 17px; text-align: center;}
.ressort-choice:has(input:checked) .ressort-count {background: #fff; color: var(--blue);}
.ressort-all[aria-pressed="true"] {border-color: var(--blue); background: var(--blue-soft); color: var(--blue);}
.smart-filters .ressort-choice:focus-within, .smart-filters .ressort-choice:focus-visible {
	outline: none; box-shadow: inset 0 0 0 2px #76add4;}
.more-filters {margin-top: 9px;}
.more-filters summary {width: max-content; color: var(--muted); font-size: 14px; font-weight: 500;}
.more-filter-fields {display: flex; align-items: center; gap: 10px; margin-top: 10px;}
.more-filter-fields select {max-width: 280px; min-height: 40px; padding: 7px 10px;}
.more-filter-fields button {color: var(--muted);}
.more-filter-fields #copy-filter-link {margin-left: auto;}
.export-workspace {display: grid; grid-template-columns: minmax(0, 1.8fr) minmax(320px, 1fr); gap: 22px; align-items: start;}
.export-workspace.stacked {grid-template-columns: 1fr;}
.export-workspace.stacked .preview-sidebar {display: contents;}
.export-workspace.stacked .problem-panel {grid-row: 1;}
.export-workspace.stacked .editor-panel {grid-row: 2;}
.export-workspace.stacked .preview-panel {grid-row: 3;}
.compact-workspace {grid-template-columns: minmax(0, 1.2fr) minmax(340px, 1fr); gap: 18px;}
.compact-workspace .panel-heading {padding: 16px 20px;}
.compact-select-actions {display: flex; gap: 2px;}
.compact-select-actions .quiet {color: var(--muted);}
.service-table {font-size: 15px;}
.service-table th {padding: 10px 14px;}
.service-table td {padding: 11px 14px;}
.service-table th:first-child, .service-table td:first-child {width: 125px; white-space: nowrap;}
.service-table th:nth-child(2), .service-table td:nth-child(2) {width: 75px; white-space: nowrap;}
.service-table th:last-child, .service-table td:last-child {width: 54px; text-align: center;}
.service-choice {cursor: pointer; background: #e4f1fc;}
.service-choice:hover {background: #d3e9fa;}
.service-choice.deselected {background: #fff; color: #687f90;}
.service-choice.deselected:hover {background: #f7f9fb;}
.service-choice:focus-visible {outline: 2px solid var(--blue); outline-offset: -2px;}
.service-choice small {margin-top: 2px;}
.edit-icon {display: inline-grid; place-items: center; width: 34px; height: 34px; min-height: 34px;
	padding: 7px; border: 0; border-radius: 5px; background: transparent; color: var(--muted);}
.edit-icon svg {display: block; width: 18px; height: 18px;}
.edit-icon:hover, .edit-icon:focus-visible {background: var(--blue-soft); color: var(--blue); text-decoration: none;}
.compact-workspace #cue-text {min-height: 310px; padding: 20px;}
.event-row.editing {outline: 2px solid var(--blue); outline-offset: -2px;}
.selection-toolbar {padding: 10px 17px; background: #fbfcfe; border-bottom: 1px solid #edf1f5; display: flex; align-items: center; gap: 6px;}
.selection-toolbar .quiet {font-size: 14px;}
.selection-toolbar span {font-size: 14px; color: var(--muted); margin-left: auto;}
#event-rows:not(tbody) {background: #edf2f6; padding: 1px 0;}
.event-row {position: relative; border: 1px solid #b9cbd8; border-radius: 10px;
	padding: 22px; margin: 24px 16px; background: #fff; box-shadow: 0 3px 8px #2036490d;}
.event-row::before {content: ''; position: absolute; top: 10px; bottom: 10px; left: -1px;
	width: 4px; border-radius: 3px; background: var(--blue); opacity: 0; pointer-events: none;}
.event-row.deselected {background: #fafbfc; border-style: dashed;}
.event-row-header {display: flex; align-items: flex-start; justify-content: space-between; gap: 16px;
	margin: -22px -22px 20px; padding: 18px 22px; background: #f5f8fa;
	border-bottom: 1px solid #dce5ec; border-radius: 10px 10px 0 0;}
.event-row.deselected .event-row-header {background: #edf1f4;}
.event-row:focus-within {border-color: #7baacb; box-shadow: 0 3px 12px #20364916;}
@media (hover: hover) {
	.event-row:hover::before {opacity: 1;}
	.event-row:hover {border-color: #7baacb; box-shadow: 0 3px 12px #20364916;}
}
.event-summary {display: flex; align-items: baseline; flex-wrap: wrap; gap: 5px 12px; min-width: 0;}
.event-summary h3 {font-size: 21px; color: #1f3c52; margin: 0; overflow-wrap: anywhere;}
.event-summary .event-type-label {font-size: 15px; color: var(--muted); overflow-wrap: anywhere;}
.event-selection {display: inline-flex; flex-direction: row; align-items: center; flex-shrink: 0;
	gap: 9px; min-height: 44px; padding: 9px 12px; border: 1px solid var(--border); border-radius: 7px;
	background: #fff; cursor: pointer; font-size: 14px; font-weight: 500;}
.event-selection input {width: 24px; height: 24px; margin: 0; cursor: pointer;}
.event-selection:has(input:checked) {background: #edf6f1; border-color: #a3c4af; color: #28533e;}
.event-selection input {accent-color: #357454;}
.event-selection:focus-within {outline: 2px solid var(--blue); outline-offset: 3px;}
.event-type-fields {display: grid; grid-template-columns: 2fr 1fr; gap: 16px; margin-top: 16px;}
.custom-kind {margin-top: 10px;}
.custom-kind[hidden] {display: none;}
.event-notes {margin-top: 18px;}
.event-notes textarea {min-height: 72px; padding: 8px 11px;}
.event-review {border-top: 1px solid #e2e8ed; padding-top: 14px; margin-top: 18px;}
.event-fields {display: grid; grid-template-columns: 1fr 1fr 2fr; gap: 16px;}
.event-fields input, .event-fields select {font-size: 15px; padding: 7px; height: 42px; box-sizing: border-box;}
.event-fields label {font-size: 14px;}
.event-fields .full-width {grid-column: 1 / -1;}
.ressort-panel {margin-top: 18px; border-top: 1px solid var(--border); padding-top: 14px;}
.ressort-panel > summary {font-size: 16px; font-weight: 650; color: var(--blue);}
.ressort-options {display: flex; flex-wrap: wrap; gap: 9px; margin: 14px 0 0; border: 0; padding: 0;}
.ressort-options legend {font-size: 14px; font-weight: 650; margin-bottom: 8px;}
.ressort-options label {flex-direction: row; align-items: center; gap: 9px; font-size: 15px;
	font-weight: 400; background: #fff; padding: 8px 10px; border: 1px solid var(--border); border-radius: 6px; cursor: pointer; min-height: 42px;}
.ressort-options input {width: 20px; height: 20px; margin: 0;}
.ressort-options label:has(input:checked) {background: var(--blue-soft); border-color: #8bb5d4;}
.event-row details {margin-top: 12px;}
.event-row details > .form-grid {margin: 15px 0;}
.event-row details > label {margin-top: 12px;}
.event-row details summary {font-size: 15px; color: var(--blue);}
.event-row .ressort-panel > summary {font-size: 16px; font-weight: 700; color: var(--blue);}
.new-location-fields {background: #f7f9fa; border: 1px solid var(--border); padding: 16px; margin-top: 16px; border-radius: 6px;}
.new-location-fields .form-grid {margin-top: 18px;}
.new-location-fields h3 {font-size: 16px; margin: 0;}
.candidate-field {margin: 15px 0; border-left: 2px solid #d6a54a; padding-left: 10px;}
.candidate-field label {font-size: 14px;}
.candidate-field small {display: block; color: #866828; margin: 8px 0 0;}
.editor-footer {padding: 18px 22px; background: #fbfcfe; display: flex; align-items: center; gap: 16px;}
.editor-footer span {font-size: 14px; color: var(--muted);}
.preview-sidebar {position: sticky; top: 20px; display: grid; gap: 16px; min-width: 0;}
.preview-panel {min-width: 0;}
.problem-panel .panel-heading {padding: 16px 20px;}
.problem-panel .panel-heading h2 {font-size: 18px;}
.problem-empty {margin: 0; padding: 14px 20px; color: var(--muted); font-size: 14px;}
.problem-empty[hidden] {display: none;}
#cue-text {border: none; border-radius: 0; min-height: 390px; padding: 25px;
	font-family: "Fira Sans", "Segoe UI", Arial, sans-serif;
	font-size: 15px; color: #304958; line-height: 1.85; resize: vertical; background: #fff;}
.preview-footer {padding: 17px 23px; border-top: 1px solid var(--border); display: flex; align-items: center; justify-content: space-between; gap: 10px;}
.preview-footer > span {font-size: 14px; color: var(--muted);}
.copy-action {display: flex; align-items: center; justify-content: flex-end; gap: 10px;}
.copy-action #copy-status {font-size: 14px; color: var(--blue);}
.copy-action #copy-status.error {color: #a0352b;}
.copy-action #copy-status:empty {display: none;}
.preview-errors:empty {display: none;}
.preview-errors {margin: 0; padding: 12px 20px 14px 38px; background: #fff8ec; color: #8a6224; font-size: 14px;}
.preview-errors li {margin: 5px 0;}
.problem-link {color: #80571c; font-weight: 700; text-decoration: underline; text-underline-offset: 2px;}
.problem-link:hover, .problem-link:focus-visible {color: var(--blue);}
.preview-errors {list-style: none; padding: 0; max-height: 38vh; overflow: auto;}
.preview-errors .checklist-item {margin: 0; padding: 12px 20px; border-bottom: 1px solid #ebdfc9;}
.preview-errors .checklist-item:last-child {border-bottom: 0;}
.checklist-context, .checklist-status {display: block; margin-top: 4px;}
.checklist-context {font-size: 12px; color: #786d59;}
.checklist-status {font-size: 13px; font-weight: 600;}
.checklist-status-line {display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin-top: 5px;}
.checklist-status-line .checklist-status {margin-top: 0;}
.checklist-research {margin-left: auto; padding: 5px 9px; min-height: 30px; font-size: 12px; white-space: nowrap;}
.location-research-result:focus {outline: 2px solid var(--blue); outline-offset: 2px;}
.event-validation-status {flex-basis: 100%; font-size: 13px; color: #8a6224;}
.event-validation-status[hidden], #retry-preview[hidden] {display: none;}
.event-row.has-problem {border-color: #d6b477;}
.event-status {font-size: 13px; color: var(--muted);}
.import-tabs {display: flex; flex-wrap: wrap; gap: 4px; padding: 12px 16px 0; border-bottom: 1px solid var(--border);}
.import-tabs [role="tab"] {padding: 11px 12px; border: 0; border-bottom: 3px solid var(--tab-color);
	border-radius: 5px 5px 0 0; background: transparent; color: var(--muted); font-size: 14px;}
.import-tabs [data-import-tab="missing"] {--tab-color: #c99736;}
.import-tabs [data-import-tab="ready"] {--tab-color: #4b9a69;}
.import-tabs [data-import-tab="deleted"] {--tab-color: #c96d63;}
.import-tabs [aria-selected="true"] {color: var(--blue); background: var(--blue-soft); font-weight: 700;}
.import-empty {margin: 0; padding: 28px 22px; color: var(--muted); font-size: 15px;}
[data-import-panel][hidden], .event-row-body[hidden], .import-empty[hidden], #discard-import[hidden] {display: none;}
.event-expand {display: flex; flex: 1; min-width: 0; gap: 10px; align-items: center; justify-content: flex-start; text-align: left;
	border: 0; border-radius: 4px; background: transparent; padding: 0; color: inherit;}
.event-expand:hover {background: transparent;}
.event-expand::before {content: '▸'; color: var(--blue); font-size: 17px;}
.event-expand[aria-expanded="true"]::before {content: '▾';}
.event-expand:focus-visible {outline: 2px solid var(--blue); outline-offset: -2px;}
.event-expand .event-title {font-size: 17px; font-weight: 700; color: #1f3c52; overflow-wrap: anywhere;}
.event-expand .event-date {font-size: 13px; font-weight: 500; color: var(--muted);}
.import-row-action {flex-shrink: 0; font-size: 13px; min-height: 36px; padding: 6px 9px;}
.event-row.collapsed-event {padding: 0; margin-top: 10px; margin-bottom: 10px; box-shadow: none;}
.event-row:has(.event-expand) .event-row-header {cursor: pointer;}
.collapsed-event .event-row-header {margin: 0; padding: 0 16px 0 0; border-bottom: 0; border-radius: 10px; align-items: center; gap: 0;}
.collapsed-event .event-expand {min-height: 60px; padding: 12px 16px;}
.collapsed-event .event-validation-status {display: none;}
.selection-toolbar {flex-wrap: wrap;}
.inline-warning {font-size: 14px; color: #8b672d; background: #fff9ec; padding: 12px 16px; margin: 0;}
.notice {padding: 14px 18px; border: 1px solid #b8d5c8; color: #306f55; background: #f0f9f4; border-radius: 5px; margin-bottom: 20px; font-size: 15px;}
.notice.error {background: #fff4f2; color: #a03931; border-color: #e6c1bb;}

/* Type grouping settings */
.type-settings-toolbar {padding: 22px; display: flex; align-items: end; flex-wrap: wrap; gap: 24px;}
.type-settings-toolbar form {display: flex; align-items: end; flex-wrap: wrap; gap: 12px; flex: 1;}
.type-settings-toolbar form label {flex: 1; min-width: 200px;}
.type-settings-toolbar button {min-height: 46px;}
.type-settings-toolbar > label {min-width: 220px;}
.type-settings-help {margin: 16px 0 24px; max-width: 960px;}
.type-board {display: grid; grid-template-columns: repeat(auto-fit, minmax(290px, 1fr)); gap: 18px; align-items: start;}
.type-column {min-height: 200px; padding-bottom: 12px; transition: border-color .15s, background .15s;}
.type-column .panel-heading {padding: 18px;}
.type-column h2 {font-size: 20px; overflow-wrap: anywhere;}
.type-category-title {display: flex; align-items: center; gap: 6px; min-width: 0;}
.type-category-delete {flex: none;}
.type-column > .quiet {margin: 8px 12px 0;}
.type-column.drop-target {border-color: var(--blue); background: var(--blue-soft); outline: 2px dashed var(--blue); outline-offset: 3px;}
.type-list {padding: 12px; display: grid; gap: 10px; min-height: 90px;}
.type-card {padding: 12px; border: 1px solid var(--border); border-radius: 6px; background: #fff;}
.type-drag-handle {cursor: grab; font-weight: 500; padding: 3px 0 12px; overflow-wrap: anywhere;}
.type-drag-handle:active {cursor: grabbing;}
.type-card select {padding: 7px 9px; font-size: 14px;}
.type-card.dragging {opacity: .45;}
.type-empty {color: var(--muted); font-size: 14px; text-align: center; padding: 18px 8px; margin: 0;}
/* Responsive */
@media (min-width: 1650px) {
	.workspace {padding-top: 32px;}
	.page-heading {margin-bottom: 33px;}
}
@media (max-width: 1250px) {
	.smart-filters {grid-template-columns: 160px 210px minmax(0, 1fr);}
	.smart-filters .day-controls {grid-column: 1 / -1; grid-row: 3; justify-content: flex-start;}
	.header-inner {gap: 24px; padding: 0 25px;}
	.main-nav a {padding: 0 9px; font-size: 14px;}
	.workspace {padding: 23px 25px 40px;}
	.filter-bar {grid-template-columns: repeat(3, 1fr);}
	.dashboard-grid {grid-template-columns: minmax(0, 1fr) 270px;}
	.export-workspace {grid-template-columns: minmax(0, 1.8fr) minmax(280px, 1fr);}
	.app-footer {margin: 0 25px;}
}
@media (max-width: 950px) {
	.cue-workspace {grid-template-columns: 1fr;}
	.cue-preview-panel {position: static;}
	.smart-filters {grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);}
	.smart-filters .ressort-filter {grid-column: 1 / -1;}
	.smart-filters .day-controls {grid-column: 1 / -1; grid-row: 3; justify-content: flex-start;}
	.header-inner {flex-wrap: wrap; gap: 0; padding-top: 14px;}
	.brand {margin-bottom: 12px;}
	.main-nav {width: 100%; flex: auto; overflow-x: auto;}
	.main-nav a {padding: 13px 12px;}
	.export-workspace, .management-grid {grid-template-columns: 1fr;}
	.preview-sidebar {position: static;}
	.export-workspace .preview-sidebar {display: contents;}
	.export-workspace .problem-panel {grid-row: 1;}
	.export-workspace .editor-panel {grid-row: 2;}
	.export-workspace .preview-panel {grid-row: 3;}
	.page-heading {align-items: flex-start;}
	.step-label {display: none;}
	.dashboard-grid {grid-template-columns: 1fr;}
	.stat-grid {gap: 10px;}
	.stat-card {padding: 17px;}
}
@media (max-width: 600px) {
	.service-form-section {padding: 22px 18px;}
	.service-time-grid {grid-template-columns: 1fr;}
	.service-location-grid {grid-template-columns: 1fr;}
	.single-service-actions {padding: 18px; flex-wrap: wrap;}
	.detail-form-heading {align-items: flex-start; flex-direction: column;}
	.import-tabs {display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0; padding: 8px 8px 0;}
	.import-tabs [role="tab"] {padding: 8px 5px; font-size: 12px;}
	.import-tabs .count-label {display: block; margin: 4px 0 0;}
	.smart-filters {grid-template-columns: 1fr;}
	.smart-filters .ressort-filter, .smart-filters .day-controls {grid-column: 1;}
	.smart-filters .day-controls {justify-content: flex-start; flex-wrap: wrap;}
	.workspace {padding: 18px 15px 30px;}
	.header-inner {padding: 12px 15px 0;}
	.page-heading {flex-direction: column; margin-bottom: 20px;}
	h1 {font-size: 27px;}
	.stat-grid {grid-template-columns: 1fr 1fr;}
	.form-grid.three, .filter-bar {grid-template-columns: 1fr;}
	.filter-main .filter-submit {margin-left: 0;}
	.more-filter-fields {flex-direction: column; align-items: stretch;}
	.more-filter-fields select {max-width: none;}
	.more-filter-fields button {margin-left: 0;}
	.panel-heading {padding: 17px; flex-wrap: wrap;}
	.week-strip {padding: 12px; gap: 4px;}
	.week-panel {overflow-x: auto;}
	.week-panel .week-strip.with-arrows {min-width: 640px;}
	.week-strip small {font-size: 14px;}
	.selection-toolbar {flex-wrap: wrap;}
	.selection-toolbar span {width: 100%; margin-left: 8px;}
	.event-fields {grid-template-columns: 1fr 1fr;}
	.event-fields > label:nth-child(3) {grid-column: 1 / -1;}
	.event-row {padding: 16px; margin: 20px 12px;}
	.event-row-header {flex-wrap: wrap; margin: -16px -16px 18px; padding: 16px;}
	.event-selection {margin-left: auto;}
	.event-type-fields {grid-template-columns: 1fr;}
	.type-board {grid-template-columns: 1fr;}
	.new-location-fields .form-grid {grid-template-columns: 1fr;}
	.editor-footer, .form-actions {flex-wrap: wrap;}
	.import-form {padding: 18px;}
	.form-grid.three > label:first-child {grid-column: 1 / -1;}
	.info-banner {flex-direction: column; gap: 4px;}
	.app-footer {margin: 0 15px; gap: 15px;}
	.app-footer > span:last-child {display: none;}
	.empty-state {padding: 35px 18px;}
}

/* Shared async indicator and location research */
.loading-indicator { display: inline-flex; align-items: center; justify-content: center; gap: .6rem; }
.loading-spinner { display: inline-block; width: 1em; height: 1em; flex: 0 0 1em; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: eventhub-spin .75s linear infinite; }
@keyframes eventhub-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .loading-spinner { animation: none; border-style: dotted; } }
.location-actions { display: flex; flex-wrap: wrap; gap: .65rem; margin-top: 1rem; }
.location-research-result { margin-top: 1rem; padding: .85rem 1rem; border-radius: .7rem; background: var(--white); }
.research-result-notice {margin: 0 0 .5rem; color: #306f55; font-weight: 700;}
.event-row[id] {scroll-margin-top: 24px;}
.research-sources { display: grid; gap: .3rem; padding-left: 1.2rem; margin: .5rem 0 0; font-size: .85rem; overflow-wrap: anywhere; }
.settings-navigation { display: flex; gap: .4rem; margin-bottom: 1.5rem; border-bottom: 1px solid var(--border); }
.settings-navigation a { padding: .75rem 1rem; text-decoration: none; border-bottom: 3px solid transparent; color: inherit; }
.settings-navigation a[aria-current] { border-bottom-color: var(--blue); background: var(--white); }
.ai-settings-form {display: grid; gap: 14px; width: 100%; max-width: 1120px; min-width: 0;}
.ai-model-grid {display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 24px; padding: 23px; min-width: 0;}
.ai-model-group, .ai-model-group label {min-width: 0;}
.ai-model-group h3 {margin: 0 0 14px;}
.ai-model-group .form-grid {grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px;}
.ai-settings-form input, .ai-settings-form select {height: 48px; box-sizing: border-box;}
.ai-settings-form .ai-prompt-choice {position: absolute; opacity: 0; width: 1px; height: 1px;}
.ai-prompt-tabs {display: flex; gap: 4px; padding: 0 22px; border-bottom: 1px solid #edf1f5; overflow-x: auto;}
.ai-prompt-tabs label {flex: none; margin: 0; border-bottom: 3px solid transparent; color: var(--muted);
	padding: 13px 15px 10px; white-space: nowrap; cursor: pointer;}
.ai-prompt-tabs label:hover {color: var(--blue); background: var(--blue-soft);}
#prompt-tab-import:checked ~ .ai-prompt-tabs label[for="prompt-tab-import"],
#prompt-tab-suggestion:checked ~ .ai-prompt-tabs label[for="prompt-tab-suggestion"],
#prompt-tab-research:checked ~ .ai-prompt-tabs label[for="prompt-tab-research"] {color: var(--blue); border-bottom-color: var(--blue);}
.ai-prompt-pane {display: none; padding: 22px;}
#prompt-tab-import:checked ~ #prompt-panel-import,
#prompt-tab-suggestion:checked ~ #prompt-panel-suggestion,
#prompt-tab-research:checked ~ #prompt-panel-research {display: block;}
.ai-prompt-pane label {margin-bottom: 8px;}
.ai-prompt-context {margin: 0 0 16px; padding: 14px 16px; border: 1px solid var(--border); border-radius: 8px; background: var(--blue-soft); line-height: 1.5;}
.ai-prompt-context p {margin: 6px 0 0;}
.ai-prompt-context code {overflow-wrap: anywhere;}
.ai-prompt-context h3 {margin: 18px 0 8px; font-size: 14px;}
.ai-prompt-flow {display: flex; flex-wrap: wrap; gap: 8px 28px; margin: 12px 0; padding-left: 20px;}
.ai-prompt-flow li {padding-left: 2px;}
.ai-context-fields {display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 0 0 16px;}
.ai-context-fields > div {padding: 10px 12px; border: 1px solid var(--border); border-radius: 6px; background: var(--white);}
.ai-context-fields dt {font-weight: 600; font-size: 13px;}
.ai-context-fields dd {margin: 4px 0 0; font-size: 14px;}
@media (max-width: 600px) {
	.ai-context-fields {grid-template-columns: 1fr;}
	.ai-prompt-flow {display: block;}
	.ai-prompt-flow li + li {margin-top: 6px;}
}
.ai-prompt-pane textarea {font-family: inherit; font-size: 15px; min-height: 320px;}
.ai-settings-actions {display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-top: 6px;}
.ai-settings-actions p {margin: 0; color: var(--blue);}
@media (max-width: 900px) {
	.ai-model-grid {grid-template-columns: 1fr;}
}
@media (max-width: 600px) {
	.ai-model-group .form-grid {grid-template-columns: minmax(0, 1fr);}
	.ai-settings-actions {align-items: flex-start; flex-direction: column;}
}
.denomination-settings { padding: 1.5rem; }
.denomination-settings h2 { margin-top: 0; }
.denomination-list { margin-top: 1.5rem; }
.denomination-item { display: flex; align-items: center; justify-content: space-between; gap: 1rem; border-top: 1px solid var(--border); padding: 1rem 0; }
.denomination-item h3, .denomination-item p { margin: .25rem 0; }
@media (max-width: 650px) { .denomination-item { align-items: flex-start; flex-direction: column; } }

/* Formatted import preview shares the CUE renderer; copying keeps the plain text. */
.preview-panel #cue-text.sr-only {position: absolute; width: 1px; height: 1px; min-height: 0; padding: 0;}
.button-flash {position: fixed; z-index: 1000; display: flex; align-items: flex-start; gap: 12px;
	width: max-content; max-width: min(380px, calc(100vw - 24px)); box-sizing: border-box;
	padding: 13px 14px; border: 1px solid #d88f86; border-radius: 9px; background: #fff4f1;
	color: #87332a; box-shadow: 0 5px 22px #20364926; font-size: 14px;}
.button-flash p {margin: 0; overflow-wrap: anywhere;}
.button-flash button {flex-shrink: 0; color: inherit; font-size: 22px; line-height: 1; min-width: 32px;}
