:root {
  --navy: #102a43;
  --navy-2: #243b53;
  --blue: #147d92;
  --gold: #e59d19;
  --gold-soft: #fff4d6;
  --paper: #ffffff;
  --surface: #f3f7fa;
  --line: #d7e1e8;
  --muted: #627d98;
  --danger: #b42318;
  --danger-soft: #fee4e2;
  --success: #067647;
  --success-soft: #dcfae6;
  --warning: #9a6700;
  --warning-soft: #fff0c2;
  --shadow: 0 9px 28px rgba(16, 42, 67, .09);
}

* { box-sizing: border-box; }
.sr-only { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0 !important; margin: -1px !important; overflow: hidden !important; clip: rect(0,0,0,0) !important; white-space: nowrap !important; border: 0 !important; }
[hidden] { display: none !important; }
html { min-height: 100%; max-width: 100%; overflow-x: clip; background: var(--surface); }
body { width: 100%; max-width: 100%; overflow-x: clip; margin: 0; color: var(--navy); font-family: Inter, Segoe UI, Arial, sans-serif; line-height: 1.45; }
a { color: #0b6b7b; text-decoration: none; }
a:hover { text-decoration: underline; }
button, input, select, textarea { font: inherit; }
button, .button {
  display: inline-flex; align-items: center; justify-content: center; gap: .4rem;
  min-height: 2.45rem; padding: .55rem .9rem; border: 1px solid var(--navy);
  border-radius: .55rem; color: white; background: var(--navy); cursor: pointer; font-weight: 650;
}
button:hover, .button:hover { filter: brightness(1.08); text-decoration: none; }
.button.secondary, button.secondary { background: white; color: var(--navy); border-color: var(--line); }
.button.gold, button.gold { background: var(--gold); color: #2d2108; border-color: #d58f0d; }
.button.danger, button.danger { background: var(--danger); border-color: var(--danger); }
.button.small, button.small { min-height: 2rem; padding: .34rem .58rem; font-size: .86rem; }
.button.tiny, button.tiny { min-height: 1.55rem; padding: .18rem .36rem; font-size: .68rem; }

.app-header { position: sticky; top: 0; z-index: 20; background: rgba(255,255,255,.97); border-bottom: 1px solid var(--line); backdrop-filter: blur(10px); }
.route-schedule .app-header { position: static; }
.header-main { width: 100%; min-width: 0; min-height: 74px; display: flex; align-items: center; gap: 1.2rem; padding: .55rem clamp(1rem, 3vw, 2.5rem); }
.brand-lockup { display: flex; align-items: center; gap: .8rem; flex: 0 1 auto; min-width: 0; }
.brand img { display: block; width: 240px; max-width: 38vw; height: auto; }
.brand-meta { display: grid; gap: .06rem; flex: 0 0 auto; padding-left: .8rem; border-left: 1px solid var(--line); white-space: nowrap; line-height: 1.25; }
.brand-meta strong { color: var(--navy); font-size: .88rem; }
.brand-meta span { color: var(--muted); font-size: .78rem; }
.brand-meta a { color: #0b6b7b; font-size: .76rem; font-weight: 700; }
.header-regie-actions { display: flex; flex: 0 0 auto; gap: .42rem; padding-left: .1rem; }
.header-regie-actions .button { min-height: 2.75rem; padding: .5rem .82rem; border-width: 2px; font-size: .92rem; white-space: nowrap; }
.header-regie-actions svg { width: 1.32rem; height: 1.32rem; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.header-regie-actions .live svg path:last-child { fill: currentColor; stroke: none; }
.header-regie-actions .sound svg circle { fill: currentColor; stroke: none; }
.header-regie-actions .live { border-color: #147d92; background: #e8f7fa; color: #0b5363; }
.header-regie-actions .sound { border-color: #d58f0d; background: #fff4d6; color: #674400; }
.event-switch { margin-left: auto; display: flex; align-items: center; gap: .45rem; }
.event-switch select { min-width: 230px; }
.user-chip { display: flex; align-items: center; gap: .65rem; padding-left: .9rem; border-left: 1px solid var(--line); color: var(--muted); font-size: .9rem; }
.main-nav { width: 100%; min-width: 0; display: flex; gap: .25rem; overflow-x: auto; padding: 0 clamp(1rem, 3vw, 2.5rem) .55rem; scrollbar-width: thin; }
.main-nav a { flex: 0 0 auto; color: var(--navy-2); font-weight: 650; padding: .48rem .7rem; border-radius: .48rem; }
.main-nav a:hover, .main-nav a.active { background: var(--gold-soft); color: #674400; text-decoration: none; }
.main-nav .nav-core { font-weight: 800; }
.main-nav .nav-calendar { border: 1px solid #d58f0d; background: #fff8e8; font-weight: 850; }
.main-nav .nav-technical { border: 1px solid #9eb4c1; }
.main-nav .nav-divider { flex: 0 0 1px; align-self: stretch; margin: .18rem .3rem; background: var(--line); }

.page { width: 100%; min-width: 0; max-width: 1500px; margin: 0 auto; padding: 1.5rem clamp(1rem, 3vw, 2.5rem) 4rem; }
.page-schedule { max-width: none; padding: .8rem clamp(.45rem, 1.15vw, 1.2rem) .75rem; }
.page-schedule > .page-title { margin-bottom: .75rem; }
.route-schedule > .footer { padding-top: .45rem; padding-bottom: .65rem; }
.page > * { min-width: 0; }
.page-title { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; margin-bottom: 1.2rem; }
.page-title h1 { margin: 0; font-size: clamp(1.65rem, 2.8vw, 2.45rem); line-height: 1.1; }
.page-title p { margin: .45rem 0 0; color: var(--muted); }
.actions { display: flex; flex-wrap: wrap; gap: .55rem; align-items: center; }

.grid { display: grid; gap: 1rem; }
.grid.cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.grid.cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.grid.cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.card { background: var(--paper); border: 1px solid var(--line); border-radius: .9rem; padding: 1.05rem; box-shadow: var(--shadow); }
.card h2, .card h3 { margin: 0 0 .75rem; }
.card p:last-child { margin-bottom: 0; }
.kpi { min-height: 124px; position: relative; overflow: hidden; }
.kpi::after { content: ''; position: absolute; z-index: 0; width: 70px; height: 70px; right: -18px; bottom: -22px; border: 13px solid var(--gold-soft); border-radius: 50%; pointer-events: none; }
.kpi .value { position: relative; z-index: 1; display: block; font-size: 2.15rem; font-weight: 800; line-height: 1; }
.kpi .label { position: relative; z-index: 1; display: block; margin-top: .45rem; padding-right: 2.25rem; color: var(--muted); }

.workflow-hub { margin-bottom: 1rem; overflow: hidden; border: 1px solid #b6c8d4; border-radius: .95rem; background: linear-gradient(135deg,#102a43 0 32%,#173e5d 100%); color: white; box-shadow: var(--shadow); }
.workflow-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; padding: 1rem 1.1rem .85rem; }
.workflow-heading h2 { margin: 0; font-size: 1.25rem; }
.workflow-heading p { margin: .25rem 0 0; color: #d5e2ea; }
.workflow-heading-actions { display: flex; align-items: center; gap: .55rem; }
.workflow-heading-actions form { margin: 0; }
.workflow-dismiss { display: grid; place-items: center; width: 2rem; min-width: 2rem; height: 2rem; min-height: 2rem; padding: 0; border: 1px solid rgba(255,255,255,.72); border-radius: 50%; background: rgba(255,255,255,.08); color: white; font-size: 1.35rem; line-height: 1; }
.workflow-dismiss:hover { border-color: white; background: white; color: var(--navy); }
.workflow-steps { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 1px; background: rgba(255,255,255,.22); }
.workflow-step { position: relative; display: grid; grid-template-columns: 40px minmax(0,1fr); gap: .12rem .65rem; align-items: center; min-height: 96px; padding: .8rem; background: white; color: var(--navy); }
.workflow-step:hover { background: #f8fbfd; text-decoration: none; }
.workflow-step.emphasized { background: var(--gold-soft); }
.workflow-number { grid-row: 1 / span 2; width: 36px; height: 36px; display: grid; place-items: center; border-radius: 50%; background: var(--navy); color: white; font-size: 1rem; font-weight: 900; }
.workflow-step.emphasized .workflow-number { background: var(--gold); color: #2d2108; }
.workflow-step strong { align-self: end; }
.workflow-step small { align-self: start; color: var(--muted); line-height: 1.25; }

.flash { margin-bottom: .9rem; padding: .82rem 1rem; border-radius: .7rem; border: 1px solid; }
.flash.success { background: var(--success-soft); color: var(--success); border-color: #75d49c; }
.flash.error { background: var(--danger-soft); color: var(--danger); border-color: #f6a8a2; }
.flash.warning { background: var(--warning-soft); color: var(--warning); border-color: #efce68; }
.mail-diagnostics { margin: 1rem 0; padding: 1rem; border: 2px solid var(--line); border-radius: .8rem; background: #f8fbfd; }
.mail-diagnostics.success { border-color: #75d49c; background: #f4fcf7; }
.mail-diagnostics.error { border-color: #f09b93; background: #fff7f6; }
.mail-diagnostics .page-title { margin-bottom: .75rem; }
.mail-diagnostics .page-title h3 { margin: 0; }
.mail-diagnostics .page-title p { margin: .25rem 0 0; }
.mail-diagnostic-steps { display: grid; gap: .55rem; margin: 0; padding: 0; list-style: none; counter-reset: none; }
.mail-diagnostic-steps > li { display: grid; grid-template-columns: 30px minmax(0,1fr); gap: .65rem; padding: .7rem; border: 1px solid #cbd8e0; border-radius: .6rem; background: white; }
.mail-diagnostic-steps > li.success { border-left: 5px solid #2a995c; }
.mail-diagnostic-steps > li.error { border-left: 5px solid #ce3026; }
.mail-diagnostic-number { display: grid; place-items: center; align-self: start; width: 28px; height: 28px; border-radius: 50%; background: var(--navy); color: white; font-weight: 900; }
.mail-diagnostic-heading { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .5rem; }
.mail-diagnostic-heading span { color: var(--muted); font-size: .8rem; }
.mail-diagnostic-steps pre { max-height: 16rem; margin: .45rem 0 0; padding: .55rem; overflow: auto; border-radius: .4rem; background: #edf2f5; color: #172c3c; font: .78rem/1.45 ui-monospace,SFMono-Regular,Consolas,monospace; white-space: pre-wrap; overflow-wrap: anywhere; }
.system-check-summary { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin: 1rem 0; padding: .9rem 1rem; border: 1px solid var(--line); border-left-width: 6px; border-radius: .7rem; background: #f8fbfd; }
.system-check-summary.success { border-left-color: #2a995c; background: var(--success-soft); }
.system-check-summary.warning { border-left-color: #d39500; background: var(--warning-soft); }
.system-check-summary.error { border-left-color: #ce3026; background: var(--danger-soft); }
.system-check-summary > div:first-child { display: grid; gap: .2rem; }
.system-check-summary > div:first-child strong { font-size: 1.08rem; }
.system-check-summary > div:first-child span { color: var(--muted); font-size: .84rem; }
.system-check-counts { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .4rem; }
.system-check-groups { display: grid; gap: 1rem; }
.system-check-group h3 { margin: 0 0 .45rem; }
.system-check-table { min-width: 820px; }
.system-check-table th:nth-child(1) { width: 36%; }
.system-check-table th:nth-child(2) { width: 25%; }
.system-check-table th:nth-child(3) { width: 27%; }
.system-check-table th:nth-child(4) { width: 12%; }
.system-check-table td { vertical-align: top; }
.system-check-table td small { display: block; margin-top: .24rem; color: var(--muted); line-height: 1.35; }
.system-check-table tr.system-check-error td:first-child { border-left: 5px solid #ce3026; }
.system-check-table tr.system-check-warning td:first-child { border-left: 5px solid #d39500; }
.system-check-table tr.system-check-ok td:first-child { border-left: 5px solid #2a995c; }
.storage-protection-test { display: grid; grid-template-columns: minmax(0,1fr) auto auto; align-items: center; gap: .75rem; margin-top: 1rem; padding: .8rem; border: 1px solid var(--line); border-radius: .7rem; background: #f8fbfd; }
.storage-protection-test p { margin: .2rem 0 0; }
.badge { display: inline-flex; align-items: center; border-radius: 999px; padding: .2rem .52rem; font-size: .78rem; font-weight: 750; background: #e8eef3; color: var(--navy-2); }
.badge.success { background: var(--success-soft); color: var(--success); }
.badge.warning { background: var(--warning-soft); color: var(--warning); }
.badge.danger { background: var(--danger-soft); color: var(--danger); }
.badge.competition { background: #fff3a6; color: #5d4b00; }
.badge.guest { background: #e5edf8; color: #244a73; }
.badge.gala, .badge.show { background: #eadcff; color: #5b2a86; }
.badge.seminar { background: #d9eef9; color: #155c7a; }

.competition-mail-table .mail-blocked { background: #fff5f4; }
.competition-mail-table .mail-ready { background: #fbfefc; }
.competition-mail-table input[type=checkbox] { width: 1.2rem; height: 1.2rem; }
.compact-list { margin: .35rem 0 0; padding-left: 1.1rem; font-size: .78rem; }
.appointment-ics-option { padding: .85rem; border: 1px solid #a8d8bd; border-radius: .65rem; background: var(--success-soft); }
.send-confirmation { border-color: #e0ad43; background: #fffaf0; }
.preparation-report-selector { display: grid; gap: .85rem; margin-bottom: 1rem; }
.preparation-report-selector .page-title { margin-bottom: 0; }
.preparation-selection-list { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .5rem; max-height: 26rem; overflow: auto; padding: .15rem; }
.preparation-selection-row { display: grid; grid-template-columns: 22px minmax(0,1fr); gap: .55rem; align-items: start; padding: .65rem; border: 1px solid var(--line); border-radius: .55rem; background: #f8fbfd; cursor: pointer; }
.preparation-selection-row:hover { border-color: var(--blue); background: #f0f8fa; }
.preparation-selection-row input { width: 1.15rem; height: 1.15rem; margin-top: .12rem; }
.preparation-selection-row strong, .preparation-selection-row small { display: block; }
.preparation-selection-row small { margin-top: .15rem; color: var(--muted); }
.technical-appearance { display: inline-block; margin-bottom: .18rem; }
.technical-stage-notes { margin-top: .8rem; padding: .75rem; border-left: 4px solid var(--gold); border-radius: .35rem; background: #fff9e8; }
.technical-stage-notes h3 { margin-bottom: .35rem; }
.technical-overview-intro { margin: -.25rem 0 .8rem; color: var(--muted); font-size: .88rem; }
.technical-overview-table { min-width: 1320px; table-layout: fixed; font-size: .78rem; }
.technical-overview-table th, .technical-overview-table td { padding: .55rem; vertical-align: top; line-height: 1.32; overflow-wrap: anywhere; word-break: break-word; }
.technical-overview-table .overview-act { width: 13%; }
.technical-overview-table .overview-appearances { width: 15%; }
.technical-overview-table .overview-connections { width: 12%; }
.technical-overview-table .overview-house-mics { width: 10%; }
.technical-overview-table .overview-mics { width: 18%; }
.technical-overview-table .overview-technical { width: 15%; }
.technical-overview-table .overview-stage { width: 17%; }
.technical-overview-stage .overview-act { width: 14%; }
.technical-overview-stage .overview-appearances { width: 16%; }
.technical-overview-stage .overview-description { width: 20%; }
.technical-overview-stage .overview-stage { width: 20%; }
.technical-overview-stage .overview-audience { width: 15%; }
.technical-overview-stage .overview-effects { width: 15%; }
.pyro-overview-table { min-width: 1480px; }
.pyro-overview-table .pyro-number { width: 5%; }
.pyro-overview-table .pyro-act { width: 14%; }
.pyro-overview-table .pyro-appointments { width: 15%; }
.pyro-overview-table .pyro-status { width: 15%; }
.pyro-overview-table .pyro-contact { width: 14%; }
.pyro-overview-table .pyro-details { width: 27%; }
.pyro-overview-table .pyro-files { width: 10%; }
.pyro-appointment { display: block; }
.pyro-appointment + .pyro-appointment { margin-top: .45rem; padding-top: .45rem; border-top: 1px solid var(--line); }
.audience-stage-table .overview-number { width: 8%; }
.audience-stage-table .overview-act { width: 22%; }
.audience-stage-table .overview-category { width: 16%; }
.audience-stage-table .overview-appearances { width: 24%; }
.audience-stage-table .overview-audience { width: 30%; }
.other-file-details { grid-column: 2 / -1; display: grid; grid-template-columns: minmax(180px,.65fr) minmax(240px,1.35fr) auto; gap: .65rem; align-items: end; padding-top: .65rem; border-top: 1px solid var(--line); }
.other-file-details .field { margin: 0; }
.other-graphics-report-page { display: flex; flex-direction: column; min-height: 255mm; }
.other-graphics-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); grid-auto-rows: minmax(0,1fr); gap: 5mm; height: 210mm; min-height: 0; }
.other-graphics-grid.single { grid-template-columns: 1fr; }
.other-graphics-grid figure { display: flex; flex-direction: column; min-width: 0; min-height: 0; margin: 0; padding: 3mm; border: 1px solid var(--line); border-radius: .45rem; background: white; }
.other-graphics-grid img { width: 100%; min-height: 0; flex: 1 1 auto; object-fit: contain; }
.other-graphics-grid figcaption { flex: 0 0 auto; padding-top: 2mm; font-size: .85rem; overflow-wrap: anywhere; }

.calendar-print-pages { display: grid; gap: 1.25rem; }
.calendar-print-page { position: relative; min-height: 190mm; padding: 8mm; background: white; border: 1px solid var(--line); border-radius: .75rem; box-shadow: var(--shadow); }
.calendar-print-heading { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; padding-bottom: 3mm; border-bottom: 1.2pt solid var(--navy); }
.calendar-print-kicker { color: var(--blue); font-size: .72rem; font-weight: 900; letter-spacing: .08em; }
.calendar-print-heading h1 { margin: .5mm 0; font-size: 1.35rem; }
.calendar-print-heading p { margin: 0; color: var(--muted); }
.calendar-print-page-number { font-weight: 850; white-space: nowrap; }
.calendar-print-legend { display: flex; flex-wrap: wrap; gap: 2mm; padding: 2.5mm 0; }
.calendar-print-legend .legend { padding: 1mm 2mm; border: 1px solid #aebdc6; border-radius: 999px; font-size: .72rem; font-weight: 750; }
.calendar-print-legend .competition { background: #fff2a8; }
.calendar-print-legend .rehearsal { background: #dce7f1; }
.calendar-print-legend .program { background: #eadcff; }
.calendar-print-legend .break { background: #f8d7d3; }
.calendar-print-legend .free-rehearsal { background: #d9f5e5; }
.calendar-print-legend .free-competition { background: #fff5bf; }
.calendar-print-legend .dealer-open { background: #d8f0dd; }
.calendar-print-legend .dealer-setup { background: #dce8f5; }
.calendar-print-table { table-layout: fixed; border: 1px solid #9aaebc; }
.calendar-print-table th, .calendar-print-table td { min-width: 0; padding: 1.2mm 2mm; border: 1px solid #b9c6ce; vertical-align: middle; overflow-wrap: anywhere; word-break: normal; hyphens: auto; }
.calendar-print-table thead th { background: #dbe6ec; }
.calendar-print-table tr > :first-child { width: 17mm; text-align: center; font-weight: 850; }
.calendar-print-table tbody tr { height: 8mm; }
.calendar-print-table-week { width: 100%; table-layout: fixed; font-size: 6.8pt; }
.calendar-print-table-week tr > :first-child { width: 13mm; }
.calendar-print-table-week th:not(:first-child) { text-align: center; }
.calendar-print-table-week td { vertical-align: top; }
.calendar-print-entry strong, .calendar-print-entry span, .calendar-print-entry small, .calendar-print-free strong, .calendar-print-free span { display: block; max-width: 100%; line-height: 1.12; overflow-wrap: anywhere; }
.calendar-print-entry.competition { background: #fff2a8; }
.calendar-print-entry.rehearsal { background: #dce7f1; }
.calendar-print-entry.program, .calendar-print-entry.program_rehearsal { background: #eadcff; }
.calendar-print-entry.seminar { background: #d9eef9; }
.calendar-print-entry.blocked-break { background: #f8d7d3; }
.calendar-print-free { color: #3f6572; background: #f3faf7; }
.calendar-print-free.prepared-rehearsal { background: #d9f5e5; }
.calendar-print-free.prepared-competition { background: #fff5bf; }
.calendar-print-unavailable { color: #71818b; background: repeating-linear-gradient(135deg,#f0f2f3,#f0f2f3 4px,#e7eaec 4px,#e7eaec 8px); }
.calendar-print-entry.dealer-open { background: #d8f0dd; }
.calendar-print-entry.dealer-setup { background: #dce8f5; }
.calendar-print-entry.dealer-teardown { background: #f2e2cd; }
.calendar-print-continuation { color: #4e6472; font-style: italic; }
.calendar-print-combined { padding: 0 !important; background: white; }
.calendar-print-layer { min-height: 4.5mm; padding: .7mm 1mm; overflow-wrap: anywhere; }
.calendar-print-layer + .calendar-print-layer { border-top: .4pt solid #9aaebc; }
.calendar-print-source { display: block; margin-bottom: .3mm; color: #496170; font-size: 5.4pt; letter-spacing: .06em; }
.calendar-print-footer { position: absolute; left: 10mm; right: 10mm; bottom: 5mm; display: flex; justify-content: space-between; gap: 1rem; padding-top: 2mm; border-top: 1px solid #b8c4cb; color: #536c7d; font-size: .72rem; }

.table-wrap { max-width: 100%; overflow: auto; border: 1px solid var(--line); border-radius: .72rem; background: white; }
.artist-filters { margin-bottom: 1rem; }
.filter-search { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: .5rem; }
.artist-list-wrap { overflow-x: auto; overflow-y: visible; scrollbar-gutter: stable; }
.artist-list-table { min-width: 1180px; table-layout: fixed; }
.artist-list-table .artist-col-competition { width: 6%; }
.artist-list-table .artist-col-participation { width: 9%; }
.artist-list-table .artist-col-name { width: 13%; }
.artist-list-table .artist-col-country { width: 7%; }
.artist-list-table .artist-col-category { width: 9%; }
.artist-list-table .artist-col-club { width: 10%; }
.artist-list-table .artist-col-contact { width: 15%; }
.artist-list-table .artist-col-communication { width: 8%; }
.artist-list-table .artist-col-files { width: 7%; }
.artist-list-table .artist-col-status { width: 16%; }
.artist-list-table th, .artist-list-table td { min-width: 0; overflow-wrap: anywhere; }
.artist-list-table .artist-contact-cell a { overflow-wrap: anywhere; word-break: break-word; }
.artist-list-table .artist-participation-cell .badge,
.artist-list-table .artist-status-cell .badge { max-width: 100%; white-space: normal; text-align: center; justify-content: center; line-height: 1.2; }
.artist-list-table .artist-status-cell { padding-right: .8rem; }
.artist-list-table .artist-status-cell .status-details { width: 100%; max-width: 100%; }
.artist-list-table .artist-status-cell .status-details > summary { overflow-wrap: anywhere; }
.artist-list-table .artist-status-cell .button { width: 100%; max-width: 100%; margin-top: .35rem; white-space: normal; text-align: center; line-height: 1.2; }
table { width: 100%; border-collapse: collapse; }
th, td { padding: .68rem .72rem; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; }
th { background: #eaf1f5; color: var(--navy); font-size: .84rem; letter-spacing: .02em; position: sticky; top: 0; z-index: 1; }
tbody tr:hover { background: #f8fbfd; }
tr:last-child td { border-bottom: 0; }

form.stack, .stack { display: grid; gap: .9rem; }
.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .9rem 1rem; align-items: start; }
.form-grid.cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.form-grid.cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.field { display: grid; grid-auto-rows: max-content; align-content: start; gap: .3rem; }
.field.full { grid-column: 1 / -1; }
.artist-field-pair { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .9rem 1rem; align-items: start; }
.field label, .field .label { font-weight: 700; font-size: .9rem; }
.field small, .help { color: var(--muted); font-size: .82rem; }
input:not([type]), input[type=text], input[type=search], input[type=password], input[type=email], input[type=url], input[type=tel], input[type=date], input[type=time], input[type=datetime-local], input[type=number], select, textarea {
  width: 100%; min-height: 2.55rem; border: 1px solid #bccbd5; border-radius: .5rem; background: white; color: var(--navy);
  padding: .55rem .65rem;
}
textarea { min-height: 112px; resize: vertical; }
input:focus, select:focus, textarea:focus { outline: 3px solid rgba(20,125,146,.18); border-color: var(--blue); }
.check { display: flex; align-items: flex-start; gap: .55rem; }
.check input { width: 1.15rem; height: 1.15rem; margin-top: .15rem; }
fieldset { min-width: 0; border: 1px solid var(--line); border-radius: .72rem; padding: 1rem; }
legend { font-weight: 800; padding: 0 .4rem; }
details { background: white; border: 1px solid var(--line); border-radius: .72rem; }
details > summary { cursor: pointer; padding: .8rem 1rem; font-weight: 750; }
details > .details-body { padding: 0 1rem 1rem; }

.tabs { display: flex; flex-wrap: wrap; gap: .4rem; margin-bottom: 1rem; }
.tabs a, .tabs button, .tabs > span { min-height: 0; padding: .5rem .72rem; border: 1px solid var(--line); border-radius: .5rem; background: white; color: var(--navy); font-weight: 700; }
.tabs a.active, .tabs button.active, .tabs > span.active { background: var(--navy); color: white; border-color: var(--navy); }
.artist-tabs { position: sticky; top: 108px; z-index: 8; padding: .45rem; border: 1px solid var(--line); border-radius: .65rem; background: rgba(243,247,250,.96); box-shadow: 0 5px 14px rgba(16,42,67,.06); }
.artist-stay-groups { align-items: stretch; }
.compact-field-group { min-width: 0; margin: 0; }
.compact-field-group legend { color: var(--navy); font-size: 1.18rem; }
.compact-number-grid { display: grid; gap: .8rem; align-items: start; }
.compact-number-grid.cols-2 { grid-template-columns: repeat(2,minmax(0,1fr)); }
.compact-number-grid.cols-3 { grid-template-columns: repeat(3,minmax(0,1fr)); }
.compact-number-grid input { max-width: 9rem; }
.money-input { position: relative; }
.money-input input { padding-right: 2.25rem; text-align: right; font-variant-numeric: tabular-nums; }
.money-input span { position: absolute; top: 50%; right: .75rem; transform: translateY(-50%); color: var(--muted); font-weight: 800; pointer-events: none; }
.calculated-value { font-variant-numeric: tabular-nums; }
.calculated-value.invalid { color: var(--danger); border-color: #f09b93; background: var(--danger-soft); }
.cost-total { color: var(--success); font-size: 1.08rem; }
.profile { display: grid; grid-template-columns: 130px 1fr; gap: 1rem; align-items: center; }
.portrait { width: 130px; height: 130px; object-fit: cover; border-radius: .85rem; border: 1px solid var(--line); background: #eef3f6; }
.portrait.placeholder { display: grid; place-items: center; font-size: 2.2rem; font-weight: 800; color: var(--muted); }
.artist-control-center { align-items: start; }
.artist-control-center .page-title { margin-bottom: .7rem; }
.membership-list { display: grid; gap: .55rem; }
.membership-row { display: grid; grid-template-columns: 58px minmax(0,1fr) auto; gap: .65rem; align-items: center; min-height: 64px; padding: .55rem; border: 1px solid #e2c95d; border-radius: .6rem; background: #fffbe6; }
.membership-row.guest { border-color: #b9cad6; background: #f3f7fb; }
.membership-number { align-self: stretch; display: grid; place-items: center; border-radius: .45rem; background: #f3c934; color: #3d3100; font-size: 1.18rem; font-weight: 900; }
.membership-row.guest .membership-number { background: #d9e5ef; color: #244a73; }
.data-check-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .45rem; margin-bottom: .8rem; }
.data-check { display: grid; grid-template-columns: 28px minmax(0,1fr); gap: .5rem; align-items: start; min-height: 54px; padding: .48rem; border: 1px solid var(--line); border-radius: .5rem; text-decoration: none; }
.data-check:hover { text-decoration: none; border-color: var(--blue); box-shadow: 0 3px 10px rgba(16,42,67,.1); }
.data-check > span { width: 26px; height: 26px; display: grid; place-items: center; border-radius: 50%; font-weight: 900; }
.data-check.complete { background: #f0faf4; color: var(--success); }
.data-check.complete > span { background: #c9f1d8; }
.data-check.missing { background: #fff9e8; color: #7a4e00; border-color: #efce68; }
.data-check.missing > span { background: #ffe49a; }
.data-check strong, .data-check small { display: block; }
.data-check small { margin-top: .12rem; color: var(--muted); line-height: 1.2; }
.data-check-action { font-weight: 800; color: #0b6b7b !important; }
.status-details { margin-top: .35rem; box-shadow: none; }
.status-details > summary { padding: .28rem .4rem; font-size: .75rem; }
.status-details ul { margin: .35rem .65rem .55rem 1.25rem; padding: 0; font-size: .78rem; }
.act-open-warning { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; }
.act-open-warning ul { margin-bottom: 0; }
.act-open-warning .button { flex: 0 0 auto; }
.process-note { display: flex; flex-wrap: wrap; align-items: center; gap: .45rem; margin-bottom: 1rem; padding: .75rem .9rem; border: 1px solid #b7cbd7; border-radius: .7rem; background: #edf7f9; }
.process-note span { padding: .28rem .5rem; border-radius: .4rem; background: white; font-weight: 750; }
.process-note b { color: var(--blue); }
.process-note small { flex: 1 0 100%; color: var(--muted); }
.act-filters { margin-bottom: 1rem; }
.filter-footer { display: flex; justify-content: space-between; align-items: center; gap: .75rem; margin-top: .65rem; }
.act-overview-list { display: grid; gap: .8rem; }
.act-overview-card { display: grid; grid-template-columns: minmax(230px,1.1fr) minmax(260px,1.25fr) minmax(260px,1fr); grid-template-areas: "identity uses indicators" "music music actions"; gap: .8rem 1rem; align-items: start; padding: .9rem; border: 1px solid var(--line); border-radius: .8rem; background: white; box-shadow: var(--shadow); }
.act-overview-card.has-select { grid-template-columns: 28px minmax(220px,1.05fr) minmax(250px,1.2fr) minmax(260px,1fr); grid-template-areas: "select identity uses indicators" ". music music actions"; }
.act-overview-card.has-open-points { border-color: #e7b344; box-shadow: inset 5px 0 #e59d19, var(--shadow); }
.act-overview-select { grid-area: select; padding-top: .35rem; }
.act-overview-identity { grid-area: identity; min-width: 0; }
.act-overview-identity h3 { margin: 0 0 .25rem; font-size: 1.18rem; }
.act-overview-identity h3 a { color: var(--navy); }
.act-overview-number { display: inline-grid; place-items: center; min-width: 42px; min-height: 32px; padding: .25rem .45rem; border-radius: .45rem; background: #edf2f6; font-weight: 900; }
.act-title-link { display: block; margin-top: .35rem; color: #0b6b7b; font-weight: 750; overflow-wrap: anywhere; }
.act-secondary-name { display: block; margin-top: .18rem; color: var(--muted); font-size: .82rem; }
.act-overview-uses { grid-area: uses; min-width: 0; }
.act-overview-uses > strong { display: block; margin-bottom: .3rem; }
.act-overview-uses ul { display: grid; gap: .35rem; margin: 0; padding: 0; list-style: none; }
.act-overview-uses li { display: grid; grid-template-columns: max-content minmax(0,1fr); gap: .15rem .4rem; align-items: center; padding: .36rem .45rem; border: 1px solid #dae4ea; border-radius: .5rem; background: #f8fbfd; }
.act-overview-uses li strong { grid-column: 2; font-size: .8rem; }
.act-overview-indicators { grid-area: indicators; display: grid; grid-template-columns: repeat(4,minmax(56px,1fr)); gap: .4rem; }
.act-indicator, .act-open-indicator > summary { display: grid; place-items: center; align-content: center; min-height: 74px; padding: .35rem; border: 1px solid var(--line); border-radius: .55rem; background: #f5f8fa; color: var(--navy); text-align: center; text-decoration: none; cursor: pointer; }
.act-indicator:hover { text-decoration: none; border-color: var(--blue); }
.act-indicator > span, .act-open-indicator > summary > span { font-size: 1.25rem; line-height: 1; font-weight: 900; }
.act-indicator strong, .act-open-indicator strong { font-size: .82rem; }
.act-indicator small, .act-open-indicator small { color: var(--muted); font-size: .68rem; }
.act-indicator.ok { border-color: #8ed1ab; background: #edf9f2; color: var(--success); }
.act-indicator.missing, .act-open-indicator > summary { border-color: #e7b344; background: #fff4d6; color: #8a5600; }
.act-open-indicator { position: relative; min-width: 0; border: 0; box-shadow: none; background: transparent; }
.act-open-indicator > summary { padding: .35rem; list-style: none; }
.act-open-indicator > summary::-webkit-details-marker { display: none; }
.act-open-indicator ul { position: absolute; z-index: 10; width: min(320px,calc(100vw - 2rem)); margin: .35rem 0 0; padding: .7rem .7rem .7rem 1.6rem; border: 1px solid #e7b344; border-radius: .55rem; background: white; box-shadow: var(--shadow); color: var(--navy); }
.act-open-indicator li + li { margin-top: .35rem; }
.act-open-indicator li a, .act-open-warning li a { display: inline-flex; align-items: baseline; gap: .35rem; color: #075e78; font-weight: 700; text-decoration: underline; text-underline-offset: 2px; }
.act-open-indicator li a:hover, .act-open-warning li a:hover { color: #9b5f00; }
.act-open-indicator li a span { margin-left: auto; }
.act-overview-music { grid-area: music; min-width: 0; }
.act-overview-music details { box-shadow: none; }
.act-overview-music details > summary { padding: .45rem .6rem; font-size: .82rem; }
.act-overview-music ul { margin: .4rem 1rem .65rem 1.6rem; overflow-wrap: anywhere; }
.act-overview-music li + li { margin-top: .65rem; }
.act-overview-actions { grid-area: actions; display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .4rem; }
.act-bulk-actions { display: flex; justify-content: space-between; align-items: center; gap: 1rem; margin-top: .8rem; padding: .75rem; border: 1px solid var(--line); border-radius: .65rem; background: white; }
.act-create-paths { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1rem; }
.act-create-paths > section { padding: 1rem; border: 1px solid var(--line); border-radius: .7rem; background: #f8fbfd; }
.staff-name-link { min-height: 0; padding: 0; border: 0; border-radius: 0; background: transparent; color: #0b6b7b; font-weight: 850; text-align: left; }
.staff-name-link:hover { filter: none; text-decoration: underline; }
.prompt-text { min-height: 24rem; font-family: ui-monospace, SFMono-Regular, Consolas, monospace; font-size: .82rem; line-height: 1.45; }
.prepared-import-preview { margin-top: 1rem; padding-top: 1rem; border-top: 2px solid var(--line); }
.prepared-import-preview .kpi { min-height: 92px; padding: .75rem; border: 1px solid var(--line); border-radius: .6rem; background: #f7fafc; }
.import-detail-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .75rem; margin: 1rem 0; }
.import-detail { border: 1px solid var(--line); border-radius: .65rem; overflow: hidden; background: white; }
.import-detail summary { padding: .7rem .8rem; background: #eef4f7; cursor: pointer; font-weight: 800; }
.import-detail > .stack { padding: .7rem; max-height: 24rem; overflow: auto; }
.import-detail-row { display: grid; gap: .14rem; padding: .55rem; border: 1px solid #dce5eb; border-radius: .5rem; background: #fbfcfd; overflow-wrap: anywhere; }
.import-detail-row span, .import-detail-row small { color: var(--muted); }
.import-history { margin-top: 1rem; border-top: 1px solid var(--line); padding-top: .8rem; }
.import-history > summary { cursor: pointer; font-weight: 800; }
.export-choice { display: flex; justify-content: space-between; align-items: center; gap: .75rem; padding: .65rem; border: 1px solid var(--line); border-radius: .55rem; background: #f8fafb; }
.manual-card { display: flex; flex-direction: column; }
.manual-card .actions { margin-top: auto; }

.communication-intro { margin-bottom: 1rem; }
.communication-timeline { display: grid; gap: 1rem; }
.communication-entry { border-left: 6px solid var(--blue); }
.communication-entry.has-open-points { border-left-color: var(--gold); }
.communication-entry h3 { margin: .55rem 0 .35rem; font-size: 1.15rem; }
.communication-entry h4 { margin: 0 0 .4rem; font-size: .92rem; }
.communication-meta { display: flex; flex-wrap: wrap; align-items: center; gap: .45rem; }
.communication-meta time { font-size: 1.03rem; font-weight: 850; }
.communication-sender { margin: .2rem 0 .65rem; color: var(--muted); }
.communication-summary { padding: .75rem .85rem; border-radius: .55rem; background: #eef7fa; }
.communication-block, .communication-open { margin-top: .75rem; padding: .65rem .8rem; border: 1px solid var(--line); border-radius: .55rem; background: #f9fbfc; }
.communication-open { border-color: #efce68; background: var(--warning-soft); }
.communication-block ul, .communication-open ul { margin: .35rem 0 0; padding-left: 1.2rem; }
.communication-source { margin-top: .65rem; color: var(--muted); font-size: .8rem; overflow-wrap: anywhere; }
.communication-entry details { margin-top: .8rem; box-shadow: none; }
.communication-form { margin-top: .7rem; }

.warning-list { display: grid; gap: .5rem; }
.warning-item { padding: .62rem .75rem; border-left: 4px solid var(--gold); background: var(--warning-soft); border-radius: .25rem .55rem .55rem .25rem; }
.timeline { display: grid; gap: .65rem; }
.timeline-item { display: grid; grid-template-columns: 64px 115px 1fr; gap: .8rem; align-items: stretch; min-height: 68px; padding: .45rem; border: 1px solid var(--line); border-radius: .55rem; }
.timeline-item.rehearsal { background: #f1f3f5; }
.timeline-item.performance { background: #fffbe3; }
.timeline-item.seminar { background: #edf8fc; }
.timeline-marker { display: grid; place-items: center; align-self: stretch; min-height: 100%; padding: .35rem; border-radius: .4rem; font-weight: 850; text-align: center; }
.timeline-marker.rehearsal { background: #bcc8d0; color: #243b53; border: 2px dashed #778a97; }
.timeline-marker.performance { background: #f3c934; color: #3d3100; border: 1px solid #c49c05; }
.timeline-marker.seminar { background: #77c5df; color: #103e51; border: 1px solid #3b99b9; }
.timeline-name { display: inline-block; margin-top: .18rem; font-weight: 750; }
.competition-jump { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 1rem; }
.competition-jump a { padding: .5rem .75rem; border: 1px solid var(--line); border-radius: .5rem; background: white; font-weight: 750; }
.competition-setting { padding: .9rem; border: 1px solid var(--line); border-radius: .7rem; background: #f9fbfc; }
.competition-setting h3 { margin-top: 0; }
.competition-grid .competition-number { background: #fff3a6; font-size: 1.05rem; text-align: center; vertical-align: middle; }
.competition-grid .slot-assigned { background: #edf8f0; }
.competition-grid .slot-missing { background: #fff0c2; color: #7a4e00; }
.competition-order-board { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; align-items: start; }
.competition-order-column { min-width: 0; overflow: hidden; border: 1px solid var(--line); border-radius: .9rem; background: #eef3f6; box-shadow: var(--shadow); }
.competition-order-column > header { display: flex; align-items: center; justify-content: space-between; gap: .7rem; min-height: 72px; padding: .8rem; border-bottom: 1px solid var(--line); background: white; }
.competition-order-column > header > div { display: flex; align-items: center; gap: .55rem; min-width: 0; }
.competition-order-column h2 { margin: 0; font-size: 1.25rem; }
.competition-order-prefix { display: grid; place-items: center; width: 2.25rem; height: 2.25rem; flex: 0 0 2.25rem; border-radius: .5rem; background: var(--gold); color: #2d2108; font-size: 1.25rem; font-weight: 900; }
.competition-order-list { display: grid; gap: .65rem; padding: .75rem; }
.competition-order-card { display: grid; grid-template-columns: 58px minmax(0, 1fr) 42px; gap: .65rem; align-items: stretch; height: 132px; overflow: hidden; border: 1px solid #c7d4dd; border-radius: .65rem; background: white; }
.competition-order-number { display: grid; place-items: center; padding: .35rem; background: #fff3a6; color: #4b3d00; font-size: 1.35rem; font-weight: 900; text-align: center; }
.competition-order-person { display: flex; flex-direction: column; justify-content: center; min-width: 0; padding: .55rem 0; }
.competition-order-person a { display: -webkit-box; overflow: hidden; color: var(--navy); font-size: 1.08rem; font-weight: 850; line-height: 1.18; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.competition-order-person span { overflow: hidden; margin-top: .28rem; color: var(--muted); font-size: .82rem; text-overflow: ellipsis; white-space: nowrap; }
.competition-order-person small { overflow: hidden; margin-top: .32rem; color: #674400; font-size: .78rem; font-weight: 750; text-overflow: ellipsis; white-space: nowrap; }
.competition-order-arrows { display: grid; grid-template-rows: 1fr 1fr; gap: .28rem; padding: .38rem .38rem .38rem 0; }
.competition-order-arrows button { min-width: 0; min-height: 0; padding: .2rem; font-size: 1.3rem; line-height: 1; }
.competition-order-arrows button:disabled { opacity: .28; cursor: default; filter: none; }
.competition-order-empty { display: grid; place-items: center; min-height: 132px; padding: 1rem; border: 2px dashed #b7c7d1; border-radius: .65rem; color: var(--muted); text-align: center; }

.calendar-shell { --calendar-row-height: 55px; display: grid; grid-template-columns: minmax(0, 1fr); gap: 1rem; align-items: start; }
.calendar-shell.calendar-size-large { --calendar-row-height: 68px; }
.calendar-shell.has-unassigned { grid-template-columns: minmax(0, 1fr); }
.calendar-shell.dealer-only { grid-template-columns: minmax(0, 1fr); }
.calendar-shell.dealer-only > aside { display: none; }
.calendar-view-switch { display: flex; flex-wrap: wrap; gap: .45rem; align-items: center; margin-bottom: .7rem; padding: .55rem; border: 1px solid var(--line); border-radius: .65rem; background: white; }
.calendar-size-switch { display: inline-flex; align-items: center; gap: .35rem; padding-left: .55rem; border-left: 1px solid var(--line); }
.calendar-free-hint-toggle { margin-left: auto; padding: .35rem .5rem; border-left: 1px solid var(--line); }
.calendar-dual { min-width: 1450px; }
.calendar-dual th:not(:first-child) { min-width: 145px; }
.dealer-track { background: #f8fbfd; }
.calendar-wrap { overflow: auto; max-height: 72vh; border: 1px solid var(--line); border-radius: .75rem; background: white; }
.calendar-wrap[data-calendar-viewport] { height: var(--calendar-available-height, 72vh); min-height: 620px; max-height: none; }
.calendar-shell > aside { min-width: 0; height: auto; min-height: 0; max-height: none; overflow: visible; }
.calendar-shell > aside .unassigned { position: static; }
.calendar-unassigned-panel .unassigned-list { display: grid; grid-template-columns: repeat(auto-fit,minmax(280px,1fr)); gap: .65rem; }
.calendar { min-width: 860px; table-layout: fixed; }
.calendar th { top: 0; z-index: 4; text-align: center; }
.calendar th:first-child { left: 0; z-index: 5; width: 76px; }
.calendar td:first-child { position: sticky; left: 0; z-index: 2; background: #f1f5f8; font-weight: 800; width: 76px; }
.calendar td { height: var(--calendar-row-height); padding: .25rem; border-right: 1px solid var(--line); }
.calendar td.allowed-rehearsal { background: #f1f3f5; }
.calendar td.allowed-competition { background: #fffde0; }
.calendar td.allowed-rehearsal.allowed-competition { background: linear-gradient(135deg,#f1f3f5 0 50%,#fffde0 50%); }
.calendar td.allowed-program, .calendar td.allowed-program_rehearsal { background: #f7f0ff; }
.calendar td.allowed-seminar { background: #edf8fc; }
.calendar td.is-free.allowed-program, .calendar td.is-free.allowed-program_rehearsal { background: #f2e5ff; }
.calendar td.is-free.allowed-seminar { background: #def4fb; }
.calendar td.is-free.allowed-rehearsal { background: #e9f8f0; }
.calendar td.is-free.allowed-competition { background: #fff8bf; }
.calendar td.is-free.allowed-rehearsal.allowed-competition { background: linear-gradient(135deg,#e9f8f0 0 50%,#fff8bf 50%); }
.calendar td.blocked-break { background: repeating-linear-gradient(135deg,#f8e3e3,#f8e3e3 8px,#f2caca 8px,#f2caca 16px); }
.calendar td.unavailable { background: repeating-linear-gradient(135deg,#f5f6f7,#f5f6f7 7px,#eceff1 7px,#eceff1 14px); }
.calendar-slot { min-height: calc(var(--calendar-row-height) - 9px); border: 2px dashed transparent; border-radius: .4rem; }
.calendar-slot[data-calendar-create] { cursor: cell; }
.calendar-slot[data-calendar-create]:hover, .calendar-slot[data-calendar-create]:focus { border-color: #259565; background: rgba(255,255,255,.45); outline: none; }
.calendar-slot.drag-over { border-color: var(--blue); background: #e0f2f4; }
.calendar-slot.saving { position: relative; opacity: .72; pointer-events: none; }
.calendar-slot.saving::after { content: 'Wird gespeichert …'; position: absolute; inset: 0; display: grid; place-items: center; padding: .25rem; border-radius: .35rem; background: rgba(255,255,255,.9); color: var(--navy); font-size: .72rem; font-weight: 800; text-align: center; }
.free-slot { min-height: 42px; display: grid; place-items: center; align-content: center; gap: .05rem; border: 1px dashed #75a88c; border-radius: .38rem; color: #176b45; text-align: center; font-size: .73rem; line-height: 1.12; }
.free-slot strong { letter-spacing: .08em; }
.free-slot small { color: #3f7c62; }
.prepared-slot { min-height: calc(var(--calendar-row-height) - 9px); font-weight: 700; }
.prepared-rehearsal { border: 2px dashed #259565; background: #e9f8f0; color: #145d3d; }
.prepared-competition { border: 2px dashed #c09b00; background: #fff8bf; color: #665200; }
.prepared-break { border: 2px solid #a33b3b; background: rgba(255,255,255,.58); color: #7a2020; }
.prepared-break small { color: #7a2020; }
.schedule-item { min-width: 0; overflow-wrap: anywhere; padding: .34rem .42rem; border-radius: .4rem; font-size: .78rem; line-height: 1.22; cursor: grab; border: 1px solid rgba(0,0,0,.15); }
.schedule-item[data-open-url] { cursor: pointer; }
.schedule-item[data-open-url]:focus { outline: 3px solid rgba(20,125,146,.35); }
.schedule-item.competition { background: #fff200; color: #2d2a00; }
.schedule-item.rehearsal { background: #d7d7d7; color: #222; font-style: italic; }
.schedule-item.program { background: #eadcff; color: #4f1e7a; border-color: #a87bcc; }
.schedule-item.program_rehearsal { background: #f3eaff; color: #5b2a86; border-style: dashed; border-color: #a87bcc; }
.schedule-item.seminar { background: #d9eef9; color: #155c7a; border-color: #77b8d3; }
.calendar td[rowspan] { position: relative; vertical-align: top; }
.calendar td[rowspan] .calendar-slot, .calendar td[rowspan] .schedule-item { min-height: calc(var(--schedule-span, 1) * var(--calendar-row-height) - 8px); }
.calendar-size-large .schedule-item { padding: .45rem .5rem; font-size: .84rem; line-height: 1.25; }
.calendar-size-large .free-slot { min-height: calc(var(--calendar-row-height) - 13px); font-size: .77rem; }
.schedule-resize-handle { width: 100%; min-height: 1.45rem; margin-top: .35rem; padding: .12rem .25rem; border: 1px dashed currentColor; background: rgba(255,255,255,.62); color: inherit; font-size: .69rem; cursor: ns-resize; touch-action: none; }
.schedule-item.resizing { opacity: .78; outline: 2px solid var(--blue); }
.schedule-regie-actions { display: flex; flex-wrap: wrap; gap: .2rem; margin-top: .32rem; }
.schedule-regie-actions .button { cursor: pointer; }
.unassigned { position: sticky; top: 142px; }
.unassigned-list { display: grid; gap: .45rem; max-height: 58vh; overflow-x: hidden; overflow-y: auto; }
.drop-unassigned { min-height: 65px; margin-top: .8rem; border: 2px dashed #9eb4c1; border-radius: .6rem; padding: .65rem; color: var(--muted); text-align: center; }
.schedule-legend { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: .7rem; }
.schedule-legend .legend { padding: .32rem .55rem; border: 1px solid var(--line); border-radius: 999px; font-size: .8rem; }
.schedule-legend .free-rehearsal { background: #e9f8f0; color: #176b45; }
.schedule-legend .free-competition { background: #fff8bf; color: #6c5700; }
.schedule-legend .free-general { background: #f7f4fb; color: #5b2a86; }
.schedule-legend .break { background: #f7d7d7; color: #7a2020; border-color: #b95d5d; }
.schedule-legend .program { background: #eadcff; color: #5b2a86; }
.schedule-legend .seminar { background: #d9eef9; color: #155c7a; }
.schedule-legend .unavailable { background: repeating-linear-gradient(135deg,#f5f6f7,#f5f6f7 6px,#e5e8eb 6px,#e5e8eb 12px); }
.schedule-legend .dealer-setup, .dealer-item.setup { background: #dcecff; color: #174a7c; border-color: #79a9d8; }
.schedule-legend .dealer-open, .dealer-item.open { background: #dcf5df; color: #1f6731; border-color: #78bc85; }
.schedule-legend .dealer-teardown, .dealer-item.teardown { background: #ffe5cf; color: #7d4216; border-color: #d89a68; }
.dealer-item { min-height: calc(var(--schedule-span, 1) * var(--calendar-row-height) - 8px); padding: .4rem; border: 1px solid; border-radius: .4rem; font-size: .78rem; }
.dealer-item p { margin: .3rem 0; white-space: pre-wrap; }
.dealer-item form { display: inline; }
.dealer-title-link { display: inline; min-width: 0; padding: 0; border: 0; background: transparent; color: inherit; font: inherit; font-weight: 850; text-align: left; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 2px; cursor: pointer; }
.dealer-title-link:hover, .dealer-title-link:focus-visible { color: var(--blue); outline: none; text-decoration-thickness: 2px; }
.dealer-free { width: 100%; min-height: 42px; padding: .25rem; border: 1px dashed #7ea6bd; background: #f8fbfd; color: var(--muted); font-size: .72rem; }
.dealer-kpis .kpi { min-height: 104px; }
.dealer-master-table { min-width: 1050px; }
.dealer-master-table td:nth-child(1) { min-width: 180px; }
.dealer-master-table td:nth-child(2), .dealer-master-table td:nth-child(4) { min-width: 190px; }
.dealer-master-table details { margin-top: .4rem; box-shadow: none; }
.dealer-master-table details > summary { padding: .3rem .4rem; font-size: .76rem; }
.empty-state { display: grid; place-items: center; gap: .2rem; min-height: 120px; color: var(--muted); text-align: center; }
.schedule-check { display: grid; grid-template-columns: minmax(120px,1fr) auto auto auto; gap: .45rem; align-items: center; padding: .5rem; border-radius: .45rem; font-size: .82rem; }
.schedule-check.complete { background: #edf8f0; }
.schedule-check.incomplete { background: #fff3d8; border-left: 4px solid #d98b00; }

.section-tabs { display: flex; flex-wrap: wrap; gap: .45rem; margin: 0 0 1rem; padding: .35rem; border: 1px solid var(--line); border-radius: .7rem; background: white; }
.section-tabs button { flex: 0 1 auto; }
.section-tabs button.active { background: var(--navy); color: white; border-color: var(--navy); }
.field-error { color: #a52218 !important; font-weight: 800; }
.sticky-save-bar { position: sticky; z-index: 12; bottom: .55rem; display: flex; justify-content: space-between; align-items: center; gap: .8rem; margin-top: .35rem; padding: .65rem .75rem; border: 1px solid #c99819; border-radius: .65rem; background: rgba(255,250,231,.97); box-shadow: 0 8px 28px rgba(16,42,67,.2); backdrop-filter: blur(6px); }
.sticky-save-bar [data-dirty-state] { color: var(--muted); font-size: .84rem; font-weight: 700; }
.sticky-save-bar [data-dirty-state].dirty { color: #8a5600; }
.toast-region { position: fixed; z-index: 1200; right: 1rem; bottom: 1rem; display: grid; gap: .45rem; width: min(390px, calc(100vw - 2rem)); pointer-events: none; }
.toast-region { padding: .75rem .9rem; border: 1px solid #8fb3c6; border-radius: .6rem; background: #edf8fb; color: var(--navy); box-shadow: 0 8px 28px rgba(16,42,67,.2); font-weight: 750; }
.toast-region.error { border-color: #dc7d76; background: #fff0ef; color: #8a1f17; }
.effective-requirements-summary { display: flex; flex-wrap: wrap; gap: .45rem 1rem; padding: .65rem .75rem; border: 1px solid #9bc4d2; border-radius: .55rem; background: #edf8fb; font-size: .84rem; }
.requirements-check-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: .55rem; }
.microphone-pair { margin-top: .85rem; align-items: start; }
.microphone-pair > .field:nth-child(-n+2) { grid-template-rows: minmax(1.2rem,auto) 2.55rem; }
.microphone-pair > .field:nth-child(-n+2) input { min-height: 2.55rem; }
.pyro-status-hint { padding: .7rem .8rem; border: 1px solid #c6d4dd; border-radius: .55rem; background: #f5f8fa; color: var(--navy); font-weight: 750; }
.pyro-status-hint.not_used { border-color: #77c398; background: #edf9f1; color: #17653a; }
.pyro-status-hint.non_reportable { border-color: #94b9ce; background: #edf6fb; color: #245a75; }
.pyro-status-hint.reportable { border-color: #e6a13a; background: #fff3dc; color: #834f00; }
.pyro-files { padding-top: .85rem; border-top: 1px solid var(--line); }
.pyro-file-list { display: flex; flex-wrap: wrap; gap: .5rem; }
.pyro-file-list a { padding: .45rem .6rem; border: 1px solid #b7c9d4; border-radius: .45rem; background: white; overflow-wrap: anywhere; }
.pyro-indicator { display: inline-grid; place-items: center; flex: 0 0 auto; width: 1.7rem; height: 1.7rem; border: 1px solid transparent; border-radius: 50%; font-size: 1.05rem; line-height: 1; vertical-align: middle; }
.pyro-indicator.reportable { border-color: #e69530; background: #fff0d6; }
.pyro-indicator.non-reportable { border-color: #8db4c9; background: #eaf5fb; color: #315f78; }
.music-completion-confirmation { padding: .75rem; border: 1px solid #d8b34c; border-radius: .6rem; background: #fff9e9; }
.artist-act-music-list { display: grid; gap: .85rem; }
.artist-act-music-row { display: grid; gap: .85rem; padding: 1rem; border: 1px solid var(--line); border-radius: .7rem; background: #f8fbfd; }
.artist-act-music-header { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: .65rem; padding-bottom: .7rem; border-bottom: 1px solid var(--line); }
.artist-act-music-identity, .artist-act-music-completion { display: grid; gap: .2rem; min-width: 0; }
.artist-act-music-settings { display: grid; grid-template-columns: minmax(260px,1fr) minmax(320px,1.15fr); gap: .75rem; align-items: stretch; }
.artist-act-music-files { min-width: 0; }
.artist-act-music-files h3 { margin: 0 0 .55rem; font-size: 1rem; }
.artist-act-music-files .music-source-list { display: grid; max-height: none; overflow: visible; }
.artist-act-music-files .music-source-entry { padding: .55rem; border: 1px solid #e0c572; border-radius: .55rem; background: white; }
#artist-act-music, #act-music { scroll-margin-top: 8rem; }
#technical-settings, #pyro-settings, #act-requirements, #act-pyro-settings { scroll-margin-top: 8rem; }
#technical-settings:target, #pyro-settings:target, #act-requirements:target, #act-pyro-settings:target {
  outline: 3px solid var(--gold);
  outline-offset: 3px;
  box-shadow: 0 0 0 7px rgba(233,163,19,.16);
}
.dealer-filter-bar { margin-bottom: 1rem; }
.act-technical-report { display: grid; gap: .85rem; }
.report-requirements { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: .55rem; }
.report-requirements > div, .report-requirements > span { min-width: 0; padding: .65rem; border: 1px solid #aebdca; background: white; overflow-wrap: anywhere; }
.report-requirements strong { display: block; margin-bottom: .3rem; font-size: .76rem; text-transform: uppercase; }

.act-artist-lock { padding: .75rem; border: 1px solid #8dd1ac; border-radius: .6rem; background: #f1fbf5; }
.cue-toolbar { display: flex; align-items: end; justify-content: space-between; gap: .8rem; margin-bottom: .8rem; padding: .7rem; border: 1px solid var(--line); border-radius: .65rem; background: #f6f9fb; }
.cue-toolbar .field { flex: 1 1 420px; }
.cue-editor-scroll { width: 100%; overflow-x: auto; border: 1px solid #aebdca; border-radius: .7rem; background: white; box-shadow: inset 0 0 0 1px rgba(255,255,255,.7); }
.cue-table-columns, .cue-fields { --cue-columns: minmax(270px,28fr) minmax(150px,15fr) minmax(120px,11fr) minmax(240px,25fr) minmax(120px,11fr) minmax(115px,10fr); display: grid; grid-template-columns: var(--cue-columns); min-width: 1180px; }
.cue-table-columns { position: sticky; top: 0; z-index: 2; background: #e8f0f5; border-bottom: 2px solid #9fb1be; }
.cue-table-columns span { padding: .55rem .5rem; border-right: 1px solid #b9c7d1; font-size: .79rem; font-weight: 850; line-height: 1.2; }
.cue-table-columns span:last-child { border-right: 0; }
.cue-list { display: grid; min-width: 1180px; }
.cue-row { border-bottom: 2px solid #aebdca; background: white; overflow: hidden; }
.cue-row:last-child { border-bottom: 0; }
.cue-row.dragging { opacity: .45; border-color: var(--blue); }
.cue-head { display: grid; grid-template-columns: 42px 40px minmax(240px, 1fr) auto; gap: .45rem; align-items: center; min-width: 1180px; padding: .48rem .55rem; background: #f7fafc; border-bottom: 1px solid var(--line); }
.cue-summary { min-width: 0; min-height: 3rem; display: grid; justify-items: start; text-align: left; color: var(--navy); background: transparent; border-color: transparent; font-weight: 700; }
.cue-summary span { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cue-summary small { color: var(--muted); font-weight: 400; }
.cue-drag { width: 38px; padding: .35rem; cursor: grab; font-size: 1.15rem; }
.cue-fields { background: white; }
.cue-fields[hidden] { display: none; }
.cue-fields > .field { min-width: 0; margin: 0; padding: .48rem; border-right: 1px solid #b9c7d1; }
.cue-fields > .field:last-child { border-right: 0; }
.cue-fields > .field > label { display: none; }
.cue-field-music { background: #fffdf2; }
.cue-assist { min-width: 1180px; padding: .65rem; border-bottom: 1px solid #d4b55d; background: #fff9e8; }
.cue-assist-intro { display: flex; flex-wrap: wrap; gap: .35rem 1rem; align-items: baseline; margin-bottom: .55rem; }
.cue-assist-intro span { color: var(--muted); font-size: .82rem; }
.cue-assist-groups { display: flex; flex-wrap: wrap; gap: .5rem; }
.cue-assist-group { flex: 1 1 210px; min-width: 190px; padding: .45rem; border: 1px solid #e0c572; border-radius: .48rem; background: white; }
.cue-assist-group > strong { display: block; margin-bottom: .25rem; font-size: .78rem; }
.cue-assist-music { flex-basis: 100%; }
.rich-text-toolbar, .cue-snippet-palette { display: flex; flex-wrap: wrap; gap: .35rem; align-items: center; }
.rich-text-toolbar { padding: 0; border: 0; background: transparent; }
.rich-text-toolbar button { min-width: 2.2rem; }
.cue-snippet-palette { padding: 0; }
.cue-snippet-button { max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; background: white; color: var(--navy); border-color: #9eb4c1; }
.direct-edit-link { display: inline-flex; align-items: center; gap: .3rem; min-height: 2rem; padding: .3rem .5rem; border: 1px solid #9eb4c1; border-radius: .45rem; background: white; font-weight: 750; }
.availability-help { margin: .8rem 0; padding: .75rem .9rem; border-left: 4px solid var(--blue); border-radius: .25rem .6rem .6rem .25rem; background: #edf7f9; }
.cue-music-selected, .music-source-list, .cue-music-palette { display: flex; flex-wrap: wrap; gap: .4rem; align-items: center; }
.cue-music-selected { min-height: 2rem; align-content: flex-start; }
.cue-selected-music-entry { display: inline-flex; flex-wrap: wrap; align-items: center; gap: .3rem; padding: .18rem; border: 1px solid #e0c572; border-radius: .48rem; background: #fffaf0; }
.cue-loop-option { display: inline-flex; align-items: center; gap: .25rem; min-height: 1.8rem; padding: .18rem .42rem; border-radius: .36rem; background: #173b52; color: white; font-size: .76rem; font-weight: 850; cursor: pointer; }
.cue-loop-option input { width: 1rem; height: 1rem; margin: 0; accent-color: var(--gold); }
.cue-music-remove { min-height: 1.8rem; padding: .18rem .42rem; border-color: #d98b8b; background: #fff5f5; color: #a61f1f; font-size: .76rem; font-weight: 850; }
.cue-music-remove:hover { border-color: #b92323; background: #ffe2e2; color: #7f1010; }
.cue-music-palette { padding: .5rem 0; }
.music-source-card { border-color: #efce68; background: #fffdf2; }
.music-source-token, .music-stage-name { color: #674400; font-weight: 800; }
.music-source-token { display: inline-flex; align-items: center; padding: .28rem .48rem; border: 1px solid #dca62c; border-radius: .4rem; background: #fff4d6; font-size: .82rem; }
.music-source-entry { display: grid; grid-template-columns: minmax(220px,1fr) minmax(280px,520px); gap: .55rem; align-items: center; width: 100%; }
.web-music-player { display: flex; align-items: center; gap: .4rem; width: min(100%,560px); margin-top: .35rem; }
.web-music-player audio { flex: 1 1 260px; min-width: 180px; height: 34px; }
.web-music-player .button { flex: 0 0 auto; }
.act-music-settings { display: grid; grid-template-columns: minmax(280px,1fr) minmax(340px,1.2fr) auto; gap: .8rem; align-items: end; margin-bottom: .8rem; padding: .75rem; border: 1px solid #e0c572; border-radius: .65rem; background: white; }
.act-music-order-list { display: grid; gap: .55rem; }
.act-music-order-row { display: grid; grid-template-columns: 42px minmax(250px,1fr) minmax(300px,1.15fr); gap: .65rem; align-items: center; padding: .55rem; border: 1px solid #e0c572; border-radius: .55rem; background: white; }
.music-order-buttons { display: grid; grid-template-rows: 1fr 1fr; gap: .25rem; }
.music-order-buttons .button { min-width: 0; min-height: 0; padding: .2rem; font-size: 1.08rem; line-height: 1; }
.music-order-buttons .button:disabled { opacity: .28; cursor: default; filter: none; }
.music-order-number { display: grid; place-items: center; min-height: 2.4rem; border-radius: .4rem; background: #fff4d6; font-weight: 850; }
.music-token-button { background: white; color: #674400; border-color: #dca62c; text-align: left; }
.music-token-button.selected { background: #674400; color: white; border-color: #674400; }
.cue-row textarea { width: 100%; min-height: 138px; padding: .48rem; border-radius: .28rem; font-size: .86rem; line-height: 1.35; }
.cue-number { width: 38px; height: 38px; border-radius: .38rem; display: grid; place-items: center; background: var(--navy); color: white; font-weight: 850; }
.cue-actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .3rem; }
.cue-actions .cue-insert-button { border-color: #d58f0d; background: var(--gold-soft); color: #674400; }

.program-act-list { display: grid; gap: .6rem; padding-left: 2rem; }
.program-act-list li { padding: .7rem; border: 1px solid var(--line); border-radius: .6rem; background: #f9fbfc; }
.program-act-list li[draggable="true"] { cursor: grab; }
.program-act-list li.program-act-dragging { opacity: .48; border-color: var(--blue); }
.program-act-drag { margin-right: .4rem; padding: .25rem .45rem; cursor: grab; }
.program-act-list li::marker { font-size: 1.2rem; font-weight: 800; color: var(--navy); }
.program-act-list li { grid-template-columns: 1fr auto; align-items: center; }
.program-act-list li:not(:only-child) { display: grid; }
.program-act-list .program-act-empty { display: block; border-style: dashed; background: #fffdf5; }
.program-act-main { min-width: 0; }
.program-act-picker { border-color: #d3b35f; background: #fffdf7; }
.program-picker-grid { align-items: start; }
.program-picker-group { min-width: 0; border: 1px solid var(--line); border-radius: .72rem; padding: .85rem; background: white; }
.program-picker-group > header { display: flex; justify-content: space-between; align-items: flex-start; gap: .8rem; margin-bottom: .65rem; }
.program-picker-group h3 { margin-bottom: .15rem; }
.program-picker-group p { margin: 0; }
.check.compact { align-items: center; white-space: nowrap; font-size: .84rem; }
.check.compact input { margin-top: 0; }
.program-act-options { display: grid; gap: .45rem; margin-bottom: .7rem; }
.program-act-option { display: grid; grid-template-columns: 22px 54px minmax(0, 1fr); gap: .55rem; align-items: center; min-height: 64px; padding: .55rem; border: 1px solid var(--line); border-radius: .55rem; background: #f8fbfd; cursor: pointer; }
.program-act-option:hover { border-color: #9eb4c1; background: #f0f7fa; }
.program-act-option:has(input:checked) { border-color: #d19a18; background: var(--gold-soft); box-shadow: inset 4px 0 #d19a18; }
.program-act-option input { width: 1.1rem; height: 1.1rem; }
.program-act-option strong, .program-act-option small { display: block; }
.program-act-option small { margin-top: .1rem; color: var(--muted); }
.program-appointments { display: grid; gap: .65rem; }
.program-appointment { padding: .7rem; border: 1px solid var(--line); border-radius: .6rem; background: #f8fbfd; }
.program-appointment details { margin-top: .55rem; box-shadow: none; }
.program-appointment details > summary { padding: .45rem .55rem; color: var(--blue); font-weight: 800; }
.program-time-form { display: grid; grid-template-columns: minmax(150px,1fr) minmax(115px,.7fr) minmax(115px,.7fr) auto; gap: .55rem; align-items: end; padding: .7rem; }
.program-time-form .field { margin: 0; }
.program-overview-filters { margin-bottom: 1rem; }
.program-day-groups { display: grid; gap: 1rem; }
.program-day-heading { margin: .35rem 0 -.35rem; padding-bottom: .35rem; border-bottom: 2px solid var(--navy); font-size: 1.35rem; }
.program-overview-list { display: grid; gap: .55rem; }
.program-overview-row { display: grid; grid-template-columns: 82px 95px minmax(220px,1.05fr) minmax(210px,.9fr) minmax(260px,auto); gap: .8rem; align-items: center; min-height: 94px; padding: .8rem .9rem; border: 1px solid var(--line); border-radius: .72rem; background: white; box-shadow: 0 5px 16px rgba(16,42,67,.06); }
.program-overview-row:hover { border-color: #a9bbc7; box-shadow: 0 7px 19px rgba(16,42,67,.09); }
.program-overview-time { grid-column: 1; align-self: stretch; display: grid; align-content: center; gap: .3rem; min-width: 0; padding: .35rem .55rem; border-right: 1px solid var(--line); border-radius: .45rem 0 0 .45rem; background: #f3f8fb; color: var(--navy); text-align: center; }
.program-overview-time span { display: grid; gap: .02rem; }
.program-overview-time span + span { padding-top: .28rem; border-top: 1px solid #c8d7e0; }
.program-overview-time small { color: var(--muted); font-size: .62rem; font-weight: 850; letter-spacing: .07em; line-height: 1.1; text-transform: uppercase; }
.program-overview-time strong { font-size: 1.06rem; line-height: 1.15; }
.program-overview-time em { margin-top: .08rem; color: var(--muted); font-size: .64rem; font-style: normal; line-height: 1.1; }
.program-overview-kind { grid-column: 2; align-self: start; }
.program-overview-main { grid-column: 3; min-width: 0; }
.program-overview-main h2 { margin: 0; font-size: 1.12rem; line-height: 1.2; }
.program-overview-main p { margin: .28rem 0 0; color: var(--muted); font-size: .86rem; }
.program-public-calendar-toggle { display: flex; align-items: center; flex-wrap: wrap; gap: .5rem; margin-top: .55rem; }
.program-public-calendar-toggle .check { margin: 0; }
.program-overview-dates { grid-column: 4; display: grid; gap: .3rem; min-width: 0; }
.program-overview-date { display: grid; grid-template-columns: minmax(125px,.7fr) minmax(160px,1.3fr); gap: .45rem; align-items: baseline; }
.program-overview-date strong, .program-overview-dates > strong { font-size: .82rem; }
.program-overview-date span, .program-overview-dates > span { font-size: .86rem; }
.program-overview-actions { grid-column: 5; display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .4rem; }
.competition-overview-card { border-left: 6px solid #c6a500; }
.program-option-number { width: 48px; min-height: 42px; display: grid; place-items: center; border-radius: .45rem; background: #fff3a6; color: #5d4b00; font-size: 1rem; font-weight: 850; }
.program-option-number.guest { background: #e5edf8; color: #244a73; }
.calendar-area-row { display: flex; justify-content: space-between; align-items: center; gap: .8rem; padding: .65rem; border: 1px solid var(--line); border-radius: .55rem; background: #f9fbfc; }
.slot-menu { width: min(520px, calc(100vw - 2rem)); }
.slot-mark-actions { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .5rem; }
.slot-mark-actions button { min-height: 3rem; }
.danger-soft { background: #f7d7d7; color: #7a2020; border-color: #b95d5d; }

.file-grid { display: grid; gap: .7rem; }
.file-row { display: grid; grid-template-columns: 80px minmax(180px, 1fr) 110px 110px auto; gap: .7rem; align-items: center; padding: .7rem; border: 1px solid var(--line); border-radius: .65rem; }
.file-thumb { width: 76px; height: 58px; object-fit: cover; border-radius: .35rem; background: #e8eef3; }
.file-type-cell { width: 76px; display: flex; flex-direction: column; align-items: stretch; gap: .28rem; }
.file-extension { display: grid; place-items: center; font-weight: 800; }
.music-cue-usage { display: inline-flex; align-items: center; justify-content: center; gap: .22rem; min-height: 1.4rem; padding: .14rem .32rem; border: 1px solid #7eb2c6; border-radius: 999px; background: #e9f6fa; color: #0b617a; font-size: .72rem; font-weight: 850; line-height: 1; cursor: help; }
.music-cue-usage span { font-size: .9rem; }
.file-date { display: flex; flex-direction: column; gap: .12rem; min-width: 0; }
.file-date small { color: var(--muted); font-size: .7rem; font-weight: 750; }
.file-date strong { font-size: .78rem; line-height: 1.25; }
.file-date span { color: var(--muted); font-size: .72rem; }

.auth-page { min-height: 100vh; display: grid; place-items: center; padding: 1rem; background: radial-gradient(circle at 20% 15%, #d9edf0, transparent 35%), var(--surface); }
.auth-card { width: min(620px, 100%); background: white; padding: clamp(1.2rem, 4vw, 2.2rem); border-radius: 1rem; box-shadow: var(--shadow); border: 1px solid var(--line); }
.auth-card .brand img { width: 280px; max-width: 100%; margin-bottom: 1rem; }
.auth-card h1 { margin: 0 0 .4rem; }
.auth-card .lead { margin: 0 0 1.2rem; color: var(--muted); }
.auth-help { margin: .9rem 0 0; text-align: center; }
.auth-help a { font-weight: 750; }
.readonly-value { min-height: 2.55rem; display: flex; align-items: center; padding: .55rem .65rem; border: 1px solid var(--line); border-radius: .5rem; background: #f3f6f8; font-weight: 750; }
.access-link-actions { display: flex; flex-wrap: wrap; align-items: flex-end; gap: .65rem; padding: .8rem; border: 1px solid var(--line); border-radius: .65rem; background: #f7fafc; }
.access-link-actions > div { flex: 1 1 280px; }
.access-link-actions p { margin: .2rem 0 0; }
.mfa-reset-actions { margin-bottom: .8rem; border-color: #e8b3a9; background: #fff8f6; }
.permission-link-actions { margin-bottom: 0; background: #f8fbfd; }
.user-setup-flow { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: .55rem; margin: 0 0 1rem; }
.user-setup-flow > div { display: grid; grid-template-columns: 34px minmax(0,1fr); align-items: center; gap: .55rem; min-height: 58px; padding: .65rem; border: 1px solid var(--line); border-radius: .65rem; background: #f5f7f9; color: var(--muted); }
.user-setup-flow strong { width: 32px; height: 32px; display: grid; place-items: center; border-radius: 50%; background: #dfe7ec; color: var(--navy); }
.user-setup-flow .active { border-color: #d19a18; background: var(--gold-soft); color: var(--navy); font-weight: 800; }
.user-setup-flow .active strong { background: var(--gold); color: #3f2b00; }
.user-setup-flow .done { border-color: #8bc9a7; background: #edf9f2; color: var(--navy); }
.user-setup-flow .done strong { background: #2f8f5b; color: white; }
.user-permission-summary { display: grid; grid-template-columns: max-content minmax(0,1fr); gap: .35rem .8rem; margin: 0; }
.user-permission-summary dt { font-weight: 800; }
.user-permission-summary dd { margin: 0; }
.mfa-steps { margin: 0 0 1rem; padding-left: 1.25rem; }
.mfa-steps li + li { margin-top: .35rem; }
.mfa-setup { display: grid; grid-template-columns: minmax(190px, 230px) minmax(0, 1fr); gap: 1rem; align-items: center; margin: 1rem 0; padding: 1rem; border: 1px solid var(--line); border-radius: .75rem; background: #f8fbfd; }
.mfa-qr { display: grid; place-items: center; min-height: 210px; padding: .7rem; border: 1px solid var(--line); border-radius: .55rem; background: white; }
.mfa-qr svg { width: 100%; height: auto; max-width: 210px; }
.phonebook-admin-card { max-width: 1120px; }
.phonebook-admin-counts { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: .65rem; margin: .9rem 0 1rem; }
.phonebook-admin-counts span { display: flex; flex-direction: column; gap: .15rem; padding: .75rem; border: 1px solid var(--line); border-radius: .65rem; background: #f5f9fb; color: var(--muted); }
.phonebook-admin-counts strong { color: var(--navy); font-size: 1.45rem; }
.phonebook-share-grid { display: grid; grid-template-columns: minmax(240px,290px) minmax(0,1fr); gap: 1rem; align-items: center; padding: 1rem; border: 1px solid #a8d8bd; border-radius: .75rem; background: #f4fbf7; }
.phonebook-admin-qr { display: grid; place-items: center; min-height: 260px; padding: .75rem; border: 1px solid var(--line); border-radius: .65rem; background: white; }
.phonebook-admin-qr svg { width: 100%; height: auto; max-width: 260px; }
.phonebook-share-grid input { min-width: 0; font-family: ui-monospace,SFMono-Regular,Consolas,monospace; font-size: .8rem; }
.phonebook-admin-danger { display: flex; flex-wrap: wrap; gap: .55rem; justify-content: flex-end; margin-top: .85rem; }
.mfa-secret { overflow-wrap: anywhere; padding: .65rem; border: 1px dashed #9eb4c1; border-radius: .45rem; background: white; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-weight: 800; letter-spacing: .08em; }
.mfa-form { margin-top: 1rem; }
.recovery-codes { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .55rem; margin: 1rem 0; }
.recovery-codes code { padding: .65rem; border: 1px solid var(--line); border-radius: .45rem; background: #f6f9fb; text-align: center; font-size: 1rem; font-weight: 800; letter-spacing: .05em; }

@media (max-width: 620px) {
  .mfa-setup { grid-template-columns: 1fr; }
  .recovery-codes { grid-template-columns: 1fr; }
  .user-setup-flow { grid-template-columns: 1fr; }
  .phonebook-admin-counts { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .phonebook-share-grid { grid-template-columns: 1fr; }
}
dialog { width: min(920px, calc(100vw - 2rem)); max-height: calc(100vh - 2rem); overflow: auto; border: 0; border-radius: 1rem; padding: 1.25rem; box-shadow: 0 24px 70px rgba(10,31,48,.28); }
dialog::backdrop { background: rgba(10,31,48,.62); backdrop-filter: blur(2px); }
.footer { color: var(--muted); font-size: .82rem; text-align: center; padding: 1rem; }
.public-calendar-page { min-height: 100vh; background: var(--surface); }
.public-calendar-header { display: flex; align-items: center; gap: 1rem; min-height: 70px; padding: .65rem clamp(.75rem,2vw,1.5rem); border-bottom: 1px solid var(--line); background: white; }
.public-calendar-header img { display: block; width: min(220px,42vw); height: auto; }
.public-calendar-header > div { display: grid; gap: .08rem; padding-left: 1rem; border-left: 1px solid var(--line); }
.public-calendar-header strong { font-size: 1rem; }
.public-calendar-header span { color: var(--muted); font-size: .82rem; }
.public-calendar-main { width: 100%; max-width: none; padding: 1rem clamp(.5rem,2vw,1.5rem) .35rem; }
.public-calendar-main > .page-title { margin-bottom: .8rem; }
.public-calendar-main .calendar-view-switch { margin-bottom: .55rem; }
.public-calendar-main .schedule-legend { margin-bottom: .55rem; }
.public-readonly-notice { border-color: #83b6ca; background: #edf8fc; color: #174d61; }
.public-readonly-calendar .calendar-wrap { width: 100%; }
.public-readonly-item { cursor: default; }
.dealer-free-readonly { display: block; color: #587083; cursor: default; }
.public-calendar-updated { margin: .45rem 0 0; color: var(--muted); font-size: .78rem; text-align: right; }
.public-calendar-print-actions { margin-bottom: .8rem; }
.public-calendar-main-print { max-width: 1500px; margin: 0 auto; }
.public-calendar-share { margin: .85rem 0 0; padding: .8rem; }
.public-calendar-share .page-title { align-items: center; margin-bottom: .6rem; }
.public-calendar-share .page-title h2 { margin-bottom: .15rem; font-size: 1.2rem; }
.public-calendar-share .page-title p { margin-top: 0; font-size: .86rem; }
.public-calendar-link-row { display: grid; grid-template-columns: minmax(260px,1fr) auto auto auto; gap: .5rem; align-items: center; }
.public-calendar-link-row input { min-width: 0; font-family: ui-monospace,SFMono-Regular,Consolas,monospace; font-size: .82rem; }
.public-calendar-share details { margin-top: .55rem; }
.public-calendar-error { max-width: 760px; margin: 8vh auto; }
.report-heading { border-bottom: 2px solid var(--navy); margin-bottom: 1rem; }
.report-heading h1 { margin: 0 0 .3rem; font-size: 2rem; }
.report-live-columns { align-items: start; }
.report-live-column { min-width: 0; }
.regie-plan-area .page-title { align-items: flex-start; margin-bottom: .7rem; }
.regie-plan-area .page-title h2 { margin-bottom: .2rem; }
.regie-plan-area .page-title p { margin: 0; }
.regie-plan-collective-actions { margin-bottom: .8rem; }
.regie-plan-choice-list { gap: .55rem; }
.regie-plan-choice { display: flex; justify-content: space-between; align-items: center; gap: .75rem; padding: .75rem; border: 1px solid var(--line); border-radius: .7rem; background: #f8fbfd; }
.regie-plan-choice > div { min-width: 0; }
.regie-plan-choice h3 { margin: .3rem 0 .15rem; font-size: 1rem; overflow-wrap: anywhere; }
.regie-plan-choice p { margin: 0; color: var(--muted); }
.regie-plan-choice .button { flex: 0 0 auto; }
.running-order-selector { max-width: 1100px; margin: 0 auto; }
.running-order-choice { display: flex; justify-content: space-between; align-items: center; gap: 1rem; }
.running-order-choice h2 { margin: .35rem 0 .2rem; }
.running-order-choice p { margin: 0; color: var(--muted); }
.running-order-choice-actions { display: grid; gap: .65rem; min-width: min(100%,430px); }
.running-order-choice-actions > div { display: grid; gap: .25rem; }
.running-order-choice-actions small { color: var(--muted); font-size: .76rem; font-weight: 800; }
.running-order-report { position: relative; display: flex; flex-direction: column; width: min(100%,190mm); min-height: 260mm; margin: 0 auto; padding: 0 0 10mm; box-sizing: border-box; background: white; color: #101820; overflow: hidden; }
.running-order-heading { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; padding-bottom: 4mm; border-bottom: 2px solid var(--navy); }
.running-order-heading span { color: #08728a; font-size: .72rem; font-weight: 850; letter-spacing: .11em; }
.running-order-heading h1 { margin: .8mm 0 0; color: var(--navy); font-size: 1.75rem; line-height: 1.12; }
.running-order-heading > strong { max-width: 42%; color: #526775; font-size: .8rem; text-align: right; }
.running-order-meta { display: grid; grid-template-columns: 1.6fr 1.1fr .8fr .8fr; margin: 4mm 0; border: 1px solid #9eb0bd; border-radius: .35rem; overflow: hidden; }
.running-order-meta > div { min-width: 0; padding: 2.2mm 2.6mm; border-right: 1px solid #b7c4cd; }
.running-order-meta > div:last-child { border-right: 0; }
.running-order-meta dt { margin: 0 0 .8mm; color: #526775; font-size: .63rem; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; }
.running-order-meta dd { margin: 0; color: var(--navy); font-size: .9rem; font-weight: 850; line-height: 1.15; }
.running-order-table-wrap { flex: 0 1 auto; max-height: 225mm; overflow: hidden; border-bottom: 1px solid #9eacb5; }
.running-order-table { width: 100%; table-layout: fixed; border-collapse: collapse; font-size: 9.5pt; }
.running-order-table th,.running-order-table td { padding: 2mm 2.3mm; border: 1px solid #9eacb5; line-height: 1.2; vertical-align: top; overflow: hidden; }
.running-order-table tbody tr:last-child td { border-bottom: 0; }
.running-order-table th { background: #e7edf1; color: #102f47; font-size: 8pt; letter-spacing: .025em; text-transform: uppercase; }
.running-order-table .running-order-number { width: 19mm; text-align: center; }
.running-order-table .running-order-number strong { display: block; font-size: 1.15rem; line-height: 1; }
.running-order-table .running-order-number small { display: block; margin-top: .8mm; color: #8a5600; font-size: .72rem; font-weight: 900; white-space: nowrap; }
.running-order-table .running-order-time { width: 24mm; text-align: center; white-space: nowrap; }
.running-order-table .running-order-time time { display: block; font-size: .82rem; font-weight: 850; line-height: 1.05; }
.running-order-table .running-order-time time + time { margin-top: .8mm; padding-top: .8mm; border-top: 1px solid #c7d2d9; }
.running-order-table .running-order-artist { width: 42%; }
.running-order-table .running-order-artist strong,.running-order-table .running-order-artist small { display: block; }
.running-order-table .running-order-artist small { margin-top: .5mm; color: #4d616e; font-size: .75rem; }
.running-order-report.without-legal-names .running-order-table .running-order-artist > strong { font-size: 11pt; line-height: 1.16; }
.running-order-table .running-order-description div { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 4; overflow: hidden; white-space: normal; }
.running-order-report.dense .running-order-table { font-size: 8pt; }
.running-order-report.dense .running-order-table th,.running-order-report.dense .running-order-table td { padding: 1.25mm 1.6mm; line-height: 1.12; }
.running-order-report.dense.without-legal-names .running-order-table .running-order-artist > strong { font-size: 9pt; }
.running-order-report.dense .running-order-description div { -webkit-line-clamp: 2; }
.running-order-report.very-dense .running-order-table { font-size: 6.8pt; }
.running-order-report.very-dense .running-order-table th,.running-order-report.very-dense .running-order-table td { padding: .75mm 1.2mm; line-height: 1.06; }
.running-order-report.very-dense .running-order-table .running-order-number strong { font-size: .82rem; }
.running-order-report.very-dense .running-order-table .running-order-artist small,.running-order-report.very-dense .running-order-table .running-order-number small { margin-top: .25mm; font-size: 6pt; }
.running-order-report.very-dense .running-order-table .running-order-time time { font-size: 6.2pt; }
.running-order-report.very-dense .running-order-table .running-order-time time + time { margin-top: .3mm; padding-top: .3mm; }
.running-order-report.very-dense.without-legal-names .running-order-table .running-order-artist > strong { font-size: 7.4pt; }
.running-order-report.very-dense .running-order-description div { -webkit-line-clamp: 1; }
.running-order-report.ultra-dense .running-order-table { font-size: 5.2pt; }
.running-order-report.ultra-dense .running-order-table th,.running-order-report.ultra-dense .running-order-table td { padding: .35mm .8mm; line-height: 1; }
.running-order-report.ultra-dense .running-order-table .running-order-number strong { font-size: 7pt; }
.running-order-report.ultra-dense .running-order-table .running-order-artist small,.running-order-report.ultra-dense .running-order-table .running-order-number small { margin-top: .15mm; font-size: 4.8pt; }
.running-order-report.ultra-dense .running-order-table .running-order-time time { font-size: 4.8pt; }
.running-order-report.ultra-dense .running-order-table .running-order-time time + time { margin-top: .15mm; padding-top: .15mm; }
.running-order-report.ultra-dense.without-legal-names .running-order-table .running-order-artist > strong { font-size: 5.8pt; }
.running-order-report.ultra-dense .running-order-table .act-title { display: none; }
.running-order-report.ultra-dense .running-order-description div { -webkit-line-clamp: 1; }
.running-order-footer { position: absolute; right: 0; bottom: 0; left: 0; display: flex; justify-content: space-between; gap: 1rem; padding-top: 2mm; border-top: 1px solid #aab7c0; color: #566772; font-size: 6.8pt; }
.report-section { margin-bottom: 1rem; }
.regie-table { table-layout: fixed; }
.regie-table th:nth-child(1) { width: 28%; }
.regie-table th:nth-child(2) { width: 15%; }
.regie-table th:nth-child(3) { width: 11%; }
.regie-table th:nth-child(4) { width: 25%; }
.regie-table th:nth-child(5) { width: 11%; }
.regie-table th:nth-child(6) { width: 10%; }
.regie-preflight { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: .5rem; margin: .6rem 0 1rem; }
.regie-preflight > div { min-width: 0; padding: .5rem; border: 1px solid #9aa7b0; background: #f7f7f7; overflow-wrap: anywhere; word-break: break-word; }
.preparation-identity { display: grid; grid-template-columns: 1fr 108px; gap: 1rem; align-items: start; }
.preparation-identity p { margin-top: 0; }
.preparation-artist-photo, .preparation-photo-placeholder { width: 108px; height: 108px; border: 1px solid #9aa7b0; border-radius: .35rem; background: #f1f3f4; }
.preparation-artist-photo { object-fit: cover; }
.preparation-photo-placeholder { display: grid; place-items: center; text-align: center; color: #687782; font-size: .78rem; }
.preparation-description { min-width: 0; margin-top: .8rem; padding: .75rem; border: 1px solid #9aa7b0; border-radius: .4rem; background: white; overflow-wrap: anywhere; word-break: break-word; }
.preparation-description h2 { margin: 0 0 .4rem; font-size: 1.05rem; }
.report-section-footer { display: flex; justify-content: space-between; gap: 1rem; margin-top: 1rem; padding-top: .4rem; border-top: 1px solid #ccd3d8; color: #555; font-size: .75rem; }
.regie-cue-number { font-weight: 800; white-space: nowrap; }
.regie-music-name { display: inline-block; max-width: 100%; padding: .12rem .28rem; border: 1px solid #9a6700; background: #fff4d6; color: #4d3500; white-space: normal; overflow-wrap: anywhere; word-break: break-word; }
.regie-music-instruction { display: inline-block; margin-top: .22rem; }

.print-only { display: none; }
.communication-mail-body { min-width: 0; max-width: 100%; background: #f7f9fb; border-radius: .6rem; padding: 1rem; line-height: 1.5; overflow-wrap: anywhere; word-break: break-word; }
.staff-kpis { margin-bottom: 1rem; }
.staff-filter-card { margin-bottom: 1rem; }
.staff-import-card, .staff-import-preview, .staff-rooms { margin-bottom: 1rem; }
.staff-import-rollback { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .85rem; border: 1px solid var(--line); border-radius: .65rem; background: #f5f9fb; }
.staff-import-rollback > div { display: grid; gap: .2rem; }
.staff-import-rollback small { color: var(--muted); }
.staff-import-preview { border-color: #d29a18; }
.staff-import-record { display: grid; gap: .75rem; padding: .9rem; border: 1px solid #c8d5df; border-radius: .75rem; background: #f8fbfd; }
.staff-import-record.has-warning { border-left: 5px solid var(--gold); }
.staff-import-heading { display: flex; justify-content: space-between; gap: 1rem; align-items: flex-start; }
.staff-import-heading > div { display: grid; gap: .18rem; min-width: 0; }
.staff-import-heading small { color: var(--muted); }
.staff-import-warnings { padding: .65rem .8rem; border-radius: .55rem; background: #fff6dc; color: #604200; }
.staff-import-warnings ul { margin: .35rem 0 0; padding-left: 1.2rem; }
.staff-import-fields .check.compact { margin-top: .35rem; font-size: .84rem; }
.staff-import-fields small { display: block; overflow-wrap: anywhere; }
.staff-report-actions { display: flex; align-items: center; gap: .75rem; flex-wrap: wrap; margin: 0 0 .8rem; padding: .7rem .85rem; border: 1px solid #c8d5df; border-radius: .7rem; background: #f7fafc; }
.staff-report-actions .help { margin-right: auto; }
.staff-master-table .is-inactive { opacity: .62; background: #f3f4f5; }
.staff-master-table th, .staff-master-table td { vertical-align: top; }
.staff-phone-heading { min-width: 10rem; }
.staff-phone a { display: inline-block; font-size: 1.12rem; font-weight: 800; color: #083a5e; white-space: nowrap; }
.staff-area-badge { background: #e8f1f7; color: #173a52; margin-bottom: .25rem; }
.staff-room-note { margin-top: .45rem; padding: .45rem .55rem; border-left: 4px solid #5d91ad; border-radius: .35rem; background: #edf6fa; color: #173a52; }
.staff-room-member-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: .45rem; padding: .65rem; border: 1px solid #cfdae3; border-radius: .65rem; background: #f7fafc; }
.staff-room-member-grid .check { min-width: 0; margin: 0; padding: .35rem .45rem; background: white; border-radius: .4rem; }
.staff-room-member-grid .check span { overflow-wrap: anywhere; }
.staff-area-list { display: grid; gap: .55rem; max-width: 54rem; }
.staff-area-row { display: grid; grid-template-columns: minmax(220px,1fr) auto; gap: .65rem; align-items: center; padding: .55rem; border: 1px solid #cfdae3; border-radius: .65rem; background: #f7fafc; }
.staff-contact-intro { margin: 0 0 .8rem; }
.staff-contact-report table { width: 100%; table-layout: fixed; font-size: 9.5pt; }
.staff-contact-report th:nth-child(1) { width: 15%; }
.staff-contact-report th:nth-child(2) { width: 17%; }
.staff-contact-report th:nth-child(3) { width: 15%; }
.staff-contact-report th:nth-child(4) { width: 16%; }
.staff-contact-report th:nth-child(5) { width: 20%; }
.staff-contact-report th:nth-child(6) { width: 17%; }
.staff-contact-phone { font-size: 11pt; font-weight: 900; white-space: nowrap; }
.staff-contact-count { margin-top: .75rem; color: #405264; }
.inbox-read-card { margin-bottom: 1rem; }
.inbox-settings-card { margin-top: 1rem; }
.keyboard-control-admin fieldset { border: 1px solid #bfd0dd; border-radius: 14px; padding: 1rem; }
.keyboard-control-admin fieldset legend { padding: 0 .45rem; font-weight: 800; color: var(--navy); }
.keyboard-control-form + .keyboard-control-form { margin-top: 1.25rem; padding-top: 1.25rem; border-top: 2px solid #d9e3ea; }
.keyboard-action-grid { display: grid; gap: .7rem; }
.keyboard-action-row { display: grid; grid-template-columns: minmax(170px,.75fr) minmax(0,2.25fr); gap: .9rem; align-items: start; padding: .75rem; border: 1px solid #d3dfe7; border-radius: 12px; background: #f8fbfd; }
.keyboard-action-heading { display: flex; flex-direction: column; gap: .2rem; padding-top: 1.55rem; }
.keyboard-action-heading small { color: #657e90; }
.keyboard-key-slots { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: .65rem; }
.keyboard-key-input { display: grid; grid-template-columns: minmax(0,1fr) auto; gap: .35rem; align-items: center; }
.keyboard-key-slot input[readonly] { cursor: pointer; background: #fff; font-family: ui-monospace, SFMono-Regular, Consolas, monospace; font-weight: 700; }
.keyboard-key-slot input[readonly]:focus { outline: 3px solid rgba(234,157,0,.28); border-color: #ea9d00; }
.keyboard-key-slot .button { min-width: 2.35rem; padding-inline: .55rem; font-size: 1.15rem; line-height: 1; }
.stream-deck-admin fieldset { border: 1px solid #bfd0dd; border-radius: 14px; padding: 1rem; }
.stream-deck-admin fieldset legend { padding: 0 .45rem; font-weight: 800; color: var(--navy); }
.stream-deck-screen-settings > .check { margin-bottom: 1rem; }
.stream-deck-action-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .8rem; }
.stream-deck-iconsets { display: grid; gap: .75rem; padding: 1rem; border: 1px solid #b9d2e3; border-radius: 14px; background: #f4f9fc; }
.stream-deck-iconsets h3, .stream-deck-iconsets h4 { margin: 0 0 .35rem; }
.stream-deck-iconset-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.stream-deck-iconset-card { display: grid; gap: .8rem; padding: .85rem; border: 1px solid #c7d9e5; border-radius: 12px; background: #fff; min-width: 0; }
.stream-deck-iconset-card img { display: block; width: 100%; height: auto; max-height: 230px; object-fit: contain; object-position: left center; border-radius: 8px; background: #071827; }
.stream-deck-iconset-card p { margin: .25rem 0 .8rem; }
.stream-deck-action-grid input[readonly] { cursor: pointer; background: #f7fbfe; font-family: ui-monospace, SFMono-Regular, Consolas, monospace; font-weight: 700; }
.stream-deck-action-grid input[readonly]:focus { outline: 3px solid rgba(234, 157, 0, .28); border-color: #ea9d00; }
.stream-deck-test { display: flex; flex-direction: column; gap: .35rem; padding: 1rem; border: 2px dashed #8da6b8; border-radius: 14px; background: #f4f8fb; cursor: pointer; }
.stream-deck-test.active { border-color: #ea9d00; background: #fff8df; outline: none; }
.stream-deck-test.success { border-color: #16874b; background: #edf9f2; }
.stream-deck-test span { color: #536f84; }
@media (max-width: 1100px) { .stream-deck-action-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 1050px) { .keyboard-action-row { grid-template-columns: 1fr; } .keyboard-action-heading { padding-top: 0; } }
@media (max-width: 760px) { .stream-deck-iconset-grid { grid-template-columns: 1fr; } }
@media (max-width: 700px) { .stream-deck-action-grid, .keyboard-key-slots { grid-template-columns: 1fr; } }
.inbox-message-list { display: grid; grid-template-columns: minmax(0,1fr); gap: 1rem; }
.inbox-message-card { min-width: 0; max-width: 100%; border-left: 5px solid var(--gold); overflow-wrap: anywhere; }
.inbox-message-card > form + form { margin-top: .7rem; }
.inbox-message-card details, .inbox-message-card .details-body, .inbox-assignment-form, .inbox-assignment-form fieldset { min-width: 0; max-width: 100%; }
.inbox-assignment-form { margin-top: .8rem; }
.inbox-assignment-form .form-grid > *, .inbox-attachment-row > * { min-width: 0; }
.inbox-attachment-list { display: grid; grid-template-columns: minmax(0,1fr); gap: .7rem; }
.inbox-attachment-row { display: grid; grid-template-columns: minmax(0,1.35fr) minmax(0,.65fr) minmax(0,.8fr); gap: .7rem; align-items: end; max-width: 100%; padding: .75rem; border: 1px solid var(--line); border-radius: .65rem; background: var(--surface); }
.inbox-history { margin-top: 1rem; }

@media (max-width: 1180px) {
  .grid.cols-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .competition-order-board { grid-template-columns: 1fr; }
  .calendar-shell, .calendar-shell.has-unassigned { grid-template-columns: 1fr; }
  .calendar-shell > aside { height: auto; min-height: 0; max-height: none; overflow: visible; }
  .unassigned { position: static; }
  .program-overview-row { grid-template-columns: 78px 90px minmax(220px,1fr) auto; }
  .program-overview-time { grid-column: 1; grid-row: 1 / span 2; }
  .program-overview-kind { grid-column: 2; grid-row: 1; }
  .program-overview-main { grid-column: 3; grid-row: 1; }
  .program-overview-dates { grid-column: 2 / -1; grid-row: 2; }
  .program-overview-actions { grid-column: 4; grid-row: 1; }
  .workflow-steps { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .requirements-check-grid, .report-requirements { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .act-overview-card, .act-overview-card.has-select { grid-template-columns: 28px minmax(0,1fr) minmax(260px,.8fr); grid-template-areas: "select identity indicators" ". uses uses" ". music actions"; }
  .act-overview-card:not(.has-select) { grid-template-columns: minmax(0,1fr) minmax(260px,.8fr); grid-template-areas: "identity indicators" "uses uses" "music actions"; }
  .act-create-paths { grid-template-columns: 1fr; }
  .public-calendar-link-row { grid-template-columns: minmax(0,1fr) auto; }
  .artist-act-music-settings, .act-music-settings { grid-template-columns: 1fr; }
  .act-music-save { justify-self: start; }
  .inbox-attachment-row { grid-template-columns: 1fr 1fr; }
  .inbox-attachment-row > :first-child { grid-column: 1 / -1; }
}
@media (max-width: 760px) {
  .system-check-summary, .storage-protection-test { display: grid; justify-items: start; }
  .system-check-counts { justify-content: flex-start; }
  .act-music-order-row { grid-template-columns: 38px minmax(0,1fr); }
  .act-music-order-row .web-music-player { grid-column: 1 / -1; }
  .header-main { flex-wrap: wrap; }
  .brand-lockup { width: 100%; flex-wrap: wrap; }
  .brand img { width: min(210px, 58vw); max-width: none; }
  .brand-meta { padding-left: .6rem; }
  .brand-meta strong { font-size: .8rem; }
  .brand-meta span { font-size: .72rem; }
  .header-regie-actions { width: 100%; flex-wrap: wrap; padding-left: 0; }
  .event-switch { order: 3; width: 100%; margin-left: 0; }
  .event-switch select { min-width: 0; flex: 1; }
  .user-chip { margin-left: auto; }
  .grid.cols-2, .grid.cols-3, .grid.cols-4, .form-grid, .form-grid.cols-3, .form-grid.cols-4, .artist-field-pair, .compact-number-grid.cols-2, .compact-number-grid.cols-3 { grid-template-columns: 1fr; }
  .regie-plan-choice { align-items: stretch; flex-direction: column; }
  .regie-plan-choice .button { align-self: flex-start; }
  .preparation-selection-list { grid-template-columns: 1fr; }
  .page-title { display: grid; }
  .profile { grid-template-columns: 86px 1fr; }
  .portrait { width: 86px; height: 86px; }
  .file-row { grid-template-columns: 64px 1fr; }
  .file-row > :nth-child(n+3) { grid-column: 2; }
  .cue-toolbar { display: grid; align-items: stretch; }
  .cue-editor-scroll { border-radius: .55rem; }
  .program-overview-row { grid-template-columns: 76px minmax(0,1fr); gap: .5rem; }
  .program-overview-time { grid-column: 1; grid-row: 1 / span 2; min-height: 82px; }
  .program-overview-kind { grid-column: 2; grid-row: 1; }
  .program-overview-main { grid-column: 2; grid-row: 2; }
  .program-overview-dates { grid-column: 1 / -1; grid-row: 3; }
  .program-overview-actions { grid-column: 1 / -1; grid-row: 4; }
  .program-overview-date { grid-template-columns: 1fr; gap: .05rem; }
  .program-overview-actions { justify-content: flex-start; }
  .program-act-list li { grid-template-columns: 1fr; }
  .program-act-list li .actions { margin-top: .55rem; }
  .program-act-option { grid-template-columns: 22px 46px minmax(0, 1fr); }
  .program-time-form { grid-template-columns: 1fr; }
  .program-option-number { width: 42px; }
  .workflow-steps { grid-template-columns: 1fr; }
  .workflow-heading { display: grid; }
  .data-check-grid { grid-template-columns: 1fr; }
  .requirements-check-grid, .report-requirements { grid-template-columns: 1fr; }
  .sticky-save-bar { position: static; display: grid; }
  .membership-row { grid-template-columns: 48px minmax(0,1fr); }
  .membership-row .badge { grid-column: 2; justify-self: start; }
  .staff-area-row { grid-template-columns: 1fr; }
  .import-detail-grid { grid-template-columns: 1fr; }
  .calendar-wrap[data-calendar-viewport] { height: auto; min-height: 0; max-height: none; }
  .calendar-size-switch { width: 100%; padding: .45rem 0 0; border-top: 1px solid var(--line); border-left: 0; }
  .music-source-entry { grid-template-columns: 1fr; }
  .web-music-player { flex-wrap: wrap; }
  .artist-tabs { position: static; }
  .act-overview-card, .act-overview-card.has-select { grid-template-columns: 26px minmax(0,1fr); grid-template-areas: "select identity" ". uses" ". indicators" ". music" ". actions"; }
  .act-overview-card:not(.has-select) { grid-template-columns: minmax(0,1fr); grid-template-areas: "identity" "uses" "indicators" "music" "actions"; }
  .act-overview-indicators { grid-template-columns: repeat(4,minmax(50px,1fr)); }
  .act-overview-actions { justify-content: flex-start; }
  .act-bulk-actions, .filter-footer { align-items: stretch; flex-direction: column; }
  .public-calendar-header { align-items: flex-start; }
  .public-calendar-header > div { padding-left: .65rem; }
  .public-calendar-link-row { grid-template-columns: 1fr; }
  .public-calendar-filter .calendar-free-hint-toggle { width: 100%; margin-left: 0; border-left: 0; }
  .act-open-warning { display: grid; }
  .act-open-warning .button { width: 100%; }
  .inbox-attachment-row { grid-template-columns: 1fr; }
  .inbox-attachment-row > :first-child { grid-column: auto; }
  .other-file-details { grid-column: 1 / -1; grid-template-columns: 1fr; }
  .running-order-choice { display: grid; align-items: stretch; }
  .running-order-choice .actions { justify-content: flex-start; }
  .running-order-meta { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .running-order-meta > div:nth-child(2) { border-right: 0; }
  .running-order-meta > div:nth-child(-n+2) { border-bottom: 1px solid #b7c4cd; }
}

.artist-bulk-mail-card { grid-column: 1 / -1; }
.bulk-mail-artist-options { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: .55rem; max-height: 24rem; overflow: auto; padding: .25rem; border: 1px solid var(--line); border-radius: 12px; background: var(--surface-soft); }
.bulk-mail-artist-option { display: grid; grid-template-columns: auto minmax(0,1fr); align-items: start; gap: .65rem; padding: .7rem; border: 1px solid var(--line); border-radius: 10px; background: var(--surface); cursor: pointer; }
.bulk-mail-artist-option span { display: grid; gap: .18rem; min-width: 0; }
.bulk-mail-artist-option small { color: var(--muted); overflow-wrap: anywhere; }
.bulk-mail-artist-option.is-disabled { opacity: .6; cursor: not-allowed; }
@media (max-width: 760px) {
  .bulk-mail-artist-options { grid-template-columns: 1fr; }
  .staff-room-member-grid { grid-template-columns: 1fr; }
  .staff-import-heading { display: grid; }
  .staff-import-rollback { align-items: stretch; flex-direction: column; }
}

@media print {
  @page { size: A4 portrait; margin: 9mm; }
  @page regie { size: A4 landscape; margin: 8mm; }
  @page calendar { size: A4 landscape; margin: 4mm; }
  @page running-order { size: A4 portrait; margin: 9mm; }
  body { background: white; color: black; font-size: 10pt; }
  .app-header, .no-print, .footer, .button, button { display: none !important; }
  .page { max-width: none; padding: 0; }
  .card { box-shadow: none; border-color: #aaa; break-inside: avoid; }
  .print-only { display: block; }
  th { position: static; background: #ddd !important; color: black; }
  .table-wrap { overflow: visible; border: 0; }
  .report-footer { position: fixed; bottom: 0; left: 0; right: 0; font-size: 8pt; color: #555; }
  .report-page-break { break-before: page; }
  .no-break { break-inside: avoid; }
  .regie-act { page: regie; display: flex; flex-direction: column; min-height: 180mm; }
  .report-section-footer { margin-top: auto; }
  .preparation-artist-photo, .preparation-photo-placeholder { width: 28mm; height: 28mm; }
  .regie-preflight { grid-template-columns: repeat(4,minmax(0,1fr)); font-size: 8.5pt; }
  .regie-table { font-size: 8.3pt; }
  .regie-table th, .regie-table td { padding: 1.8mm; }
  .calendar-wrap { max-height: none; overflow: visible; }
  .calendar { min-width: 0; font-size: 7.5pt; }
  .calendar td { height: 13mm; }
  .calendar-print-pages { display: block; }
  .calendar-print-page { page: calendar; width: 100%; min-height: 197mm; padding: 0 0 6mm; border: 0; border-radius: 0; box-shadow: none; break-after: page; box-sizing: border-box; overflow: hidden; }
  .calendar-print-page:last-child { break-after: auto; }
  .calendar-print-heading { padding-bottom: 2mm; }
  .calendar-print-heading h1 { font-size: 14pt; }
  .calendar-print-heading p { font-size: 8.5pt; }
  .calendar-print-legend { padding: 1.6mm 0; gap: 1mm; }
  .calendar-print-legend .legend { font-size: 6.3pt; padding: .5mm 1.2mm; }
  .calendar-print-table { font-size: 6.5pt; }
  .calendar-print-table th, .calendar-print-table td { padding: .55mm .85mm; }
  .calendar-print-table tbody tr { height: 10.5mm; }
  .calendar-print-table-week tr > :first-child { width: 12mm; }
  .calendar-print-table-week strong { font-size: 6.1pt; }
  .calendar-print-table-week small { font-size: 5.6pt; }
  .calendar-print-footer { left: 0; right: 0; bottom: 0; font-size: 6.8pt; }
  .staff-contact-report { overflow: visible; }
  .staff-contact-report table { font-size: 8.7pt; }
  .staff-contact-report th, .staff-contact-report td { padding: 2mm; overflow-wrap: anywhere; }
  .staff-contact-phone { font-size: 10pt; }
  .technical-overview-wrap { overflow: visible; }
  .technical-overview-table { width: 100%; min-width: 0; table-layout: fixed; font-size: 6.8pt; }
  .technical-overview-table thead { display: table-header-group; }
  .technical-overview-table tr { break-inside: avoid; page-break-inside: avoid; }
  .technical-overview-table th, .technical-overview-table td { padding: 1.25mm; line-height: 1.22; }
  .technical-overview-intro { font-size: 7.4pt; }
  .pyro-overview-table { font-size: 6.5pt; }
  .pyro-overview-table th, .pyro-overview-table td { padding: 1mm; line-height: 1.18; }
  .pyro-overview-table .pyro-appointment + .pyro-appointment { margin-top: 1mm; padding-top: 1mm; }
  .other-graphics-report-page { min-height: 267mm; break-after: page; page-break-after: always; }
  .other-graphics-report-page:last-of-type { break-after: auto; page-break-after: auto; }
  .other-graphics-grid { height: 218mm; }
  .other-graphics-grid figure { break-inside: avoid; page-break-inside: avoid; }
  .other-graphics-grid figcaption { font-size: 8pt; }
  .running-order-report { page: running-order; width: 100%; height: 278mm; min-height: 278mm; max-height: 278mm; margin: 0; padding-bottom: 8mm; overflow: hidden; break-inside: avoid; page-break-inside: avoid; break-after: avoid; page-break-after: avoid; }
  .running-order-heading { padding-bottom: 3mm; }
  .running-order-heading h1 { font-size: 18pt; }
  .running-order-meta { margin: 3mm 0; }
  .running-order-table-wrap { max-height: 235mm; overflow: hidden; }
  .running-order-table { transform-origin: top left; }
  .running-order-footer { right: 0; bottom: 0; left: 0; }
}

/* Künstler-Fotoverwaltung */
.artist-photo-management .photo-management-grid { align-items: start; }
.photo-primary-preview { display: grid; place-items: center; min-height: 230px; padding: .75rem; border: 1px solid var(--line, #d8dee5); border-radius: .75rem; background: var(--surface-soft, rgba(127,127,127,.06)); }
.photo-primary-preview .portrait { width: min(100%, 320px); max-height: 360px; object-fit: contain; border-radius: .65rem; }
.photo-primary-preview .portrait.placeholder { min-height: 220px; display: grid; place-items: center; text-align: center; }
.file-row.is-primary-image { outline: 2px solid rgba(174, 126, 0, .55); outline-offset: -2px; border-radius: .6rem; }
.photo-status-form { padding-top: .35rem; }

/* Gemeinsame Vollständigkeitsmatrix für alle Wettbewerbsteilnehmenden. */
.competition-open-table-wrap{max-height:70vh;overflow:auto;border:1px solid var(--line);border-radius:12px}
.competition-open-table{min-width:1680px;margin:0;border-collapse:separate;border-spacing:0}
.competition-open-table th{position:sticky;top:0;z-index:2;background:#0c2944;color:#fff;vertical-align:bottom}
.competition-open-table th:first-child,.competition-open-table td:first-child{position:sticky;left:0;z-index:1;background:#f7fafc}
.competition-open-table thead th:first-child{z-index:3;background:#0c2944}
.competition-open-table td{vertical-align:middle}
.competition-open-table td.check-ok,.competition-open-table td.check-open,.competition-open-table td.check-na{text-align:center;min-width:118px}
.competition-open-table td.check-ok{background:#e4f6ec;color:#08783d;font-weight:800}
.competition-open-table td.check-open{padding:0;background:#fff0c7}
.competition-open-table td.check-open a{min-height:64px;padding:.55rem;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.15rem;color:#7a4b00;font-weight:900;text-decoration:none}
.competition-open-table td.check-open a:hover{background:#ffe19a;color:#553300}
.competition-open-table td.check-ok span,.competition-open-table td.check-open span{font-size:1.2rem;line-height:1}
.competition-open-table td.check-ok small,.competition-open-table td.check-open small{display:block;font-size:.68rem;text-transform:uppercase;letter-spacing:.035em}
.competition-open-table td.check-na{color:var(--muted);background:#f5f7f9}
.competition-open-table tr.is-complete td:not(.check-ok):not(.check-na){background:#f8fffb}
.competition-open-summary{min-width:220px}
.competition-open-summary summary{font-weight:800;color:#8a5600;cursor:pointer}
.competition-open-summary ul{margin:.55rem 0 0;padding-left:1.15rem}
.competition-open-summary li+li{margin-top:.35rem}
.competition-open-summary li small{display:block;color:var(--muted)}
.act-open-all-link{display:block;padding:.55rem .8rem;border-top:1px solid #efd08a;background:#fff8e8;font-weight:800;text-align:center}

/* Uhrzeiten im Gesamt-Kalender dürfen niemals innerhalb von HH:MM umbrechen. */
.calendar-print-table-week tr > :first-child{width:15mm;white-space:nowrap;overflow-wrap:normal;word-break:normal;hyphens:none;padding-left:.5mm;padding-right:.5mm}

/* Musikdatei-Diagnose 1.0.26 */
.music-diagnostic-player{margin-top:.45rem;display:flex;flex-direction:column;gap:.2rem;max-width:34rem}.music-diagnostic-player audio{width:min(100%,32rem);height:34px}.music-diagnostic-player small{font-size:.78rem}

/* 1.1.0 – Orga-Dashboard, ToDo und persönliche Startseite */
.user-settings-link{font-weight:700;color:inherit;text-decoration:none;border-bottom:1px dashed rgba(15,53,78,.35)}
.user-settings-link:hover{color:#006f8c;border-bottom-color:currentColor}
.orga-dashboard{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1rem;margin-top:1rem}
.orga-tile{display:flex;align-items:center;gap:1rem;min-height:132px;padding:1.25rem;border:1px solid #cbd8e2;border-radius:16px;background:#fff;color:#0d3049;text-decoration:none;box-shadow:0 4px 14px rgba(20,53,76,.06);transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}
.orga-tile:hover{transform:translateY(-2px);box-shadow:0 8px 22px rgba(20,53,76,.11);border-color:#e2a800}
.orga-tile-icon{display:grid;place-items:center;width:72px;height:72px;flex:0 0 72px;border-radius:16px;background:#fff4ca;color:#0d3049;font-size:2.2rem}
.orga-tile-icon svg{width:42px;height:42px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.orga-tile strong{display:block;font-size:1.35rem;margin-bottom:.35rem}.orga-tile small{display:block;color:#587184;line-height:1.45}
.orga-tile-placeholder{opacity:.62;cursor:default}.orga-tile-placeholder:hover{transform:none;box-shadow:0 4px 14px rgba(20,53,76,.06);border-color:#cbd8e2}
.todo-list-nav{display:flex;gap:.65rem;align-items:stretch;flex-wrap:wrap;margin:1rem 0}
.todo-list-chip{display:flex;flex-direction:column;gap:.2rem;min-width:220px;max-width:360px;padding:.75rem 1rem;border:1px solid #cbd8e2;border-radius:12px;background:#fff;text-decoration:none;color:#0d3049}
.todo-list-chip.active{border-color:#e7aa00;background:#fff8dc;box-shadow:inset 0 0 0 1px #e7aa00}.todo-list-chip small{color:#647b8d}
.todo-list-new{align-self:center}.todo-list-new summary{cursor:pointer;font-weight:700;color:#075f77}.todo-list-new .inline-form{margin-top:.5rem}
.inline-form{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.inline-form input{min-width:280px}
.todo-table td{vertical-align:top}.todo-table tr.status-done td{background:#f4fbf7}.todo-table tr.status-done td:nth-child(2) strong{text-decoration:line-through;text-decoration-color:#8aa99a}
.todo-people-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.todo-people-grid>section{border:1px solid #d4e0e8;border-radius:12px;padding:1rem;background:#f8fbfd}.todo-user-checks{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:.35rem;margin-bottom:.75rem}
.settings-choice{border:0;padding:0;margin:0}.settings-choice legend{margin-bottom:.7rem}.settings-option{display:flex;gap:.75rem;align-items:flex-start;border:1px solid #d1dee7;border-radius:12px;padding:1rem;margin:.55rem 0;cursor:pointer}.settings-option:has(input:checked){border-color:#d79b00;background:#fff8df}.settings-option span{display:flex;flex-direction:column;gap:.25rem}.settings-option small{color:#60798b}.settings-option.disabled{opacity:.55;cursor:not-allowed}
.page-title-artist-link{color:inherit;text-decoration:none;border-bottom:2px solid #e5a600}.page-title-artist-link:hover{color:#006f8c}.subtle-link{color:#557286;text-decoration:none}.subtle-link:hover{text-decoration:underline}
@media(max-width:820px){.todo-people-grid{grid-template-columns:1fr}.orga-dashboard{grid-template-columns:1fr}.inline-form input{min-width:0;width:100%}}

.inbox-connection-details>summary{display:flex;align-items:center;justify-content:space-between;gap:1rem;cursor:pointer;list-style:none}.inbox-connection-details>summary::-webkit-details-marker{display:none}.inbox-connection-details>summary>span:first-child{display:grid;gap:.2rem}.inbox-connection-details>summary strong{font-size:1.15rem}.inbox-connection-details>summary small{color:#587184}.inbox-connection-details[open]>summary{padding-bottom:1rem;border-bottom:1px solid #d8e2e9;margin-bottom:1rem}.mail-read-progress{margin-top:1rem;padding:1rem;border:1px solid #9fc5df;border-radius:12px;background:#eef8ff;display:flex;align-items:center;gap:.9rem;color:#0d3049}.mail-read-progress[hidden]{display:none}.mail-read-progress div{display:grid;gap:.2rem}.mail-read-progress small{color:#587184}.mail-read-spinner{width:24px;height:24px;border:3px solid #c8dce9;border-top-color:#0d6f9f;border-radius:50%;animation:mail-read-spin .8s linear infinite;flex:0 0 auto}@keyframes mail-read-spin{to{transform:rotate(360deg)}}
.admin-dashboard{margin-top:1.2rem}
.admin-export-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:.55rem}
.admin-export-row{display:flex;align-items:flex-start;gap:.7rem;padding:.72rem .8rem;border:1px solid #cfdae2;border-radius:10px;background:#fff;cursor:pointer}
.admin-export-row:hover{border-color:#e3a419;background:#fffaf0}.admin-export-row input{margin-top:.2rem}.admin-export-row span{display:grid;gap:.15rem}.admin-export-row small{color:#587087}

/* Admin dashboard: wider cards and controlled title wrapping (v1.1.6) */
.admin-dashboard{grid-template-columns:repeat(4,minmax(0,1fr));}
.admin-dashboard .orga-tile{min-width:0;}
.admin-dashboard .orga-tile>span:last-child{min-width:0;}
.admin-dashboard .orga-tile strong{font-size:1.2rem;line-height:1.25;overflow-wrap:normal;word-break:normal;hyphens:none;}
.admin-dashboard .orga-tile small{overflow-wrap:normal;word-break:normal;}
@media(max-width:1280px){.admin-dashboard{grid-template-columns:repeat(3,minmax(0,1fr));}}
@media(max-width:980px){.admin-dashboard{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:660px){.admin-dashboard{grid-template-columns:1fr;}}
.appointment-date-stack{display:flex;flex-direction:column;align-items:flex-start;line-height:1.35;white-space:nowrap}.admin-contact-filters{margin:.25rem 0 .75rem}.admin-export-row[hidden]{display:none!important}
.field-error-link { color: inherit; font-weight: inherit; text-decoration: underline; text-underline-offset: 2px; }
.field-error-link:hover { text-decoration-thickness: 2px; }
/* 1.1.9 Dashboard-Harmonisierung */
.competition-header-row{display:grid;grid-template-columns:minmax(280px,.8fr) minmax(720px,2.2fr);gap:1rem;align-items:start;margin-bottom:1rem}.competition-title{margin:0}.competition-header-kpis{margin:0}.competition-dashboard{display:grid;gap:1rem;margin:1rem 0}.competition-primary-tile{width:100%;min-height:104px}.competition-dashboard-group>h2{font-size:1rem;margin:.2rem 0 .55rem}.dashboard-shortcuts{margin-bottom:1rem}@media(max-width:1100px){.competition-header-row{grid-template-columns:1fr}.competition-header-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:650px){.competition-header-kpis{grid-template-columns:1fr}}

/* 1.1.10 Dashboard-Raster und Outlook-Export UI */
.export-dashboard{grid-template-columns:repeat(3,minmax(0,1fr))}
.competition-dashboard-group .orga-dashboard{grid-template-columns:repeat(3,minmax(0,1fr))}
.competition-primary-tile{background:#fff1bf;border-color:#e79b00;box-shadow:0 8px 22px rgba(231,155,0,.12)}
.competition-primary-tile .orga-tile-icon{background:#e79b00;color:#102d45}
.orga-tile{min-width:0}.orga-tile>span:last-child{min-width:0}.orga-tile strong,.orga-tile small{overflow-wrap:break-word;word-break:normal}
@media(max-width:1050px){.export-dashboard,.competition-dashboard-group .orga-dashboard{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:650px){.export-dashboard,.competition-dashboard-group .orga-dashboard{grid-template-columns:1fr}}

/* 1.1.11 dashboard consistency */
.dashboard-shortcuts,.reports-dashboard{grid-template-columns:repeat(3,minmax(0,1fr));}
@media(max-width:1050px){.dashboard-shortcuts,.reports-dashboard{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:650px){.dashboard-shortcuts,.reports-dashboard{grid-template-columns:1fr;}}
.kpi.kpi-warning{border-color:#e8b24a;background:linear-gradient(180deg,#fff,#fffaf0)}
.kpi.kpi-success{border-color:#8fd3aa;background:linear-gradient(180deg,#fff,#f6fff9)}
.kpi-status{display:block;margin-top:.35rem;font-weight:700;font-size:.88rem;color:#a86600}
.kpi-success .kpi-status{color:#16814b}
.process-note-dismissible{position:relative;padding-right:2.7rem}
.process-note-dismiss{position:absolute;right:.55rem;top:.45rem;margin:0}
.process-note-dismiss button{border:0;background:transparent;font-size:1.35rem;line-height:1;cursor:pointer;color:var(--muted);padding:.15rem .35rem}
.process-note-dismiss button:hover{color:var(--text)}
.reports-dashboard{margin-top:1rem}

/* 1.1.12 – Outlook-artiger Maildialog im Künstler-Kommunikationsverlauf */
.communication-primary-actions{display:flex;gap:.65rem;align-items:center;justify-content:flex-end;flex-wrap:wrap}
.communication-mail-primary{font-weight:800;box-shadow:0 4px 14px rgba(203,133,0,.18)}
.artist-mail-dialog{width:min(980px,calc(100vw - 2rem));max-height:92vh;padding:0;border:1px solid #c9d5df;border-radius:12px;box-shadow:0 24px 80px rgba(7,36,59,.28);background:#fff;color:#0b2d47}
.artist-mail-dialog::backdrop{background:rgba(5,28,45,.44);backdrop-filter:blur(2px)}
.artist-mail-compose-form{display:flex;flex-direction:column;min-height:min(760px,88vh)}
.artist-mail-titlebar{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;background:#eef3f7;border-bottom:1px solid #d5e0e7;font-size:1.05rem}
.artist-mail-titlebar>div{display:flex;align-items:center;gap:.55rem}.artist-mail-app-icon{font-size:1.25rem}.artist-mail-close{border:0;background:transparent;font-size:1.8rem;line-height:1;cursor:pointer;color:#35566d;padding:.1rem .4rem}
.artist-mail-toolbar{display:flex;gap:.6rem;align-items:center;padding:.75rem 1rem;border-bottom:1px solid #e0e7ec;background:#fafcfd}
.artist-mail-fields{padding:0 1rem;border-bottom:1px solid #e0e7ec}.artist-mail-fields label{display:grid;grid-template-columns:72px 1fr;align-items:center;border-bottom:1px solid #edf1f4}.artist-mail-fields label:last-child{border-bottom:0}.artist-mail-fields label span{font-weight:700;color:#587184}.artist-mail-fields input{border:0!important;border-radius:0!important;box-shadow:none!important;padding:.75rem .4rem!important;background:transparent!important}
.artist-mail-body{flex:1;padding:.8rem 1rem}.artist-mail-body textarea{width:100%;min-height:260px;resize:vertical;border:0!important;box-shadow:none!important;font:inherit;line-height:1.5;padding:.4rem!important}
.artist-mail-documentation{display:grid;grid-template-columns:1fr 1fr;gap:1rem;padding:1rem;background:#f5f8fa;border-top:1px solid #dbe5eb}.artist-mail-documentation textarea{width:100%}
@media(max-width:760px){.artist-mail-documentation{grid-template-columns:1fr}.artist-mail-dialog{width:calc(100vw - 1rem)}.communication-primary-actions{justify-content:flex-start}.communication-mail-primary{width:100%}}


/* 1.1.13 – Header-Zeit, Kontaktkarten und klickbare KPI-Details */
.header-local-clock{display:flex;flex-direction:column;align-items:flex-end;justify-content:center;min-width:135px;padding:.25rem .55rem;border-left:1px solid var(--line);line-height:1.2}.header-local-clock span{font-size:.75rem;color:var(--muted);white-space:nowrap}.header-local-clock strong{font-size:1.12rem;letter-spacing:.04em;color:var(--text);font-variant-numeric:tabular-nums}.kpi-status-link{display:inline-block;text-decoration:underline;text-underline-offset:3px}.kpi-status-link:hover{text-decoration-thickness:2px}.dashboard-detail-card{scroll-margin-top:1rem}.dashboard-detail-list{display:grid;gap:.7rem}.dashboard-detail-item{display:grid;grid-template-columns:minmax(220px,.8fr) minmax(0,2fr);gap:1rem;padding:.85rem;border:1px solid var(--line);border-radius:12px;background:#fbfdff}.dashboard-detail-item>div:first-child{display:flex;flex-direction:column;gap:.2rem}.dashboard-detail-item small{color:var(--muted)}.dashboard-detail-issues{display:grid;gap:.4rem}.dashboard-detail-issues a{display:grid;grid-template-columns:auto 1fr;column-gap:.5rem;padding:.55rem .65rem;border:1px solid #edd298;border-radius:9px;background:#fff9e9;color:#754900;text-decoration:none}.dashboard-detail-issues a>span{grid-row:1/3;font-weight:900}.dashboard-detail-issues a small{color:#8d6a24}.dashboard-detail-issues a:hover{background:#fff1c5;border-color:#dca21d}.admin-export-row{min-width:0}.admin-export-row>span{min-width:0;width:100%}.admin-export-row small,.admin-export-row strong,.admin-export-row .check span{overflow-wrap:anywhere;word-break:normal}.admin-export-row .check{align-items:flex-start}.admin-export-row .check span{line-height:1.25}.admin-export-grid{grid-auto-rows:minmax(118px,auto)}
@media(max-width:900px){.header-local-clock{display:none}.dashboard-detail-item{grid-template-columns:1fr}}

/* 1.1.14 UI refinements */
.user-chip{display:flex;flex-direction:column;align-items:flex-end;justify-content:center;gap:.28rem;text-align:right;margin-left:auto}
.user-chip .user-settings-link{display:block;text-align:right;font-weight:700}
.user-chip form{margin:0;display:flex;justify-content:flex-end;width:100%}
.user-chip .button,.user-chip button{margin-left:auto}
.artist-profile-main{min-width:0;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:1.25rem;align-items:center}
.artist-profile-info{min-width:0}
.artist-profile-mail{display:flex;justify-content:flex-end;align-items:center}
.artist-profile-mail-button{min-width:220px;justify-content:center;padding:.75rem 1rem;font-size:1rem;font-weight:800;white-space:normal;text-align:center}
.admin-export-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important;align-items:stretch}
.admin-export-row{min-width:0;overflow:hidden;height:100%}
.admin-export-row>span{min-width:0;max-width:100%}
.admin-export-row strong,.admin-export-row small,.admin-export-row .check,.admin-export-row .check span{min-width:0;max-width:100%;overflow-wrap:anywhere;word-break:break-word;white-space:normal}
.admin-export-row .check{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.45rem;align-items:start}
.admin-export-row .check input{margin-top:.15rem}
@media(max-width:1100px){.admin-export-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}.artist-profile-main{grid-template-columns:1fr}.artist-profile-mail{justify-content:flex-start}.artist-profile-mail-button{min-width:0}}
@media(max-width:720px){.admin-export-grid{grid-template-columns:1fr!important}.user-chip{align-items:flex-end}.artist-profile-mail-button{width:100%}}


/* 1.1.15 – Terminflucht, Upload-Link und kleine UI-Korrekturen */
.calendar-tile-icon{font-family:"Segoe UI Emoji","Apple Color Emoji",sans-serif;font-size:1.65rem}
.act-overview-uses li{grid-template-columns:130px minmax(90px,1fr) 112px;align-items:start}
.act-overview-uses li>.badge{grid-column:1;grid-row:1;justify-self:start}
.act-overview-uses li>span:not(.badge){grid-column:2;grid-row:1;padding-top:.15rem}
.act-overview-uses li>.appointment-date-stack{grid-column:3;grid-row:1;align-items:flex-start;padding-top:.05rem}
.settings-reset-infoboxes{display:flex;flex-wrap:wrap;align-items:center;gap:.7rem;margin-top:1rem;padding-top:1rem;border-top:1px solid var(--line)}
.settings-reset-infoboxes small{color:var(--muted)}
.external-upload-admin{margin:0 0 1rem}.external-upload-created input{display:block;width:100%;margin:.55rem 0;font-family:ui-monospace,Consolas,monospace}.external-upload-link-list{display:grid;gap:.45rem;margin-top:.8rem}.external-upload-link-list>div{display:flex;align-items:center;gap:.65rem;flex-wrap:wrap;padding:.55rem;border:1px solid var(--line);border-radius:.55rem;background:#f8fbfd}.external-upload-link-list small{flex:1;min-width:240px}.external-upload-body{margin:0;background:#eef3f7;color:#0b2d47}.external-upload-main{min-height:100vh;display:grid;place-items:center;padding:2rem 1rem}.external-upload-card{width:min(820px,100%);background:#fff;border:1px solid #cad8e2;border-radius:16px;padding:1.4rem;box-shadow:0 18px 50px rgba(6,36,57,.14)}.external-upload-logo{font-size:3rem;text-align:center}.external-upload-card h1{text-align:center;margin:.4rem 0}.external-upload-card>p{text-align:center;color:var(--muted)}.external-upload-limits{display:flex;gap:.8rem;flex-wrap:wrap;justify-content:center;margin:1rem 0;padding:.7rem;border-radius:.65rem;background:#fff4cf}.external-upload-form fieldset{border:1px solid #d6e1e8;border-radius:.7rem;padding:1rem}.external-upload-form legend{font-weight:850}.external-upload-form input[type=file]{width:100%}.external-upload-submit{font-size:1.05rem;padding:.8rem 1.2rem}.act-mail-button{margin-left:auto}.field-error[hidden]{display:none!important}
@media(max-width:800px){.act-overview-uses li{grid-template-columns:1fr 112px}.act-overview-uses li>.badge{grid-column:1}.act-overview-uses li>span:not(.badge){grid-column:1;grid-row:2}.act-overview-uses li>.appointment-date-stack{grid-column:2;grid-row:1/span 2}}

/* 1.1.21: spoken six-digit sound code. */
.sound-share-code{display:flex;flex-direction:column;gap:.25rem;margin:.8rem 0}
.sound-share-code strong{font:700 clamp(2rem,6vw,3.2rem)/1.2 ui-monospace,Consolas,monospace;letter-spacing:.08em}
.sound-code-copy-source{width:9rem!important;font-family:ui-monospace,Consolas,monospace;font-weight:700}

/* CUE-DRUCK-14PT-20260910
 * Gezielt größere Schrift nur in den Cue-Tabellen der Regiepläne.
 * Keine Änderung an Tonregie, Dateien, Daten, Nummerierung oder Zugangsrechten.
 */
.regie-act .regie-table {
  font-size: 14pt;
  line-height: 1.35;
}
.regie-act .regie-table th {
  font-size: 14pt;
  line-height: 1.25;
  font-weight: 700;
  letter-spacing: normal;
}
.regie-act .regie-table .regie-cue-number {
  font-size: 15pt;
  font-weight: 800;
}
.regie-act .regie-table .regie-music-name,
.regie-act .regie-table .regie-music-instruction {
  font-size: inherit;
  line-height: inherit;
}
@media print {
  @page regie-cues {
    size: A4 landscape;
    margin: 8mm;
    @bottom-right {
      content: "Seite " counter(page) " / " counter(pages);
      font-family: Arial, Helvetica, sans-serif;
      font-size: 9pt;
      color: #000;
    }
  }
  /* Normale Blockaufteilung statt eines über mehrere Seiten laufenden Flex-
     Containers; eine lange Cue-Tabelle darf ohne Skalierung weiterlaufen. */
  .regie-act:has(.regie-table) {
    page: regie-cues;
    display: block;
    min-height: 0;
    height: auto;
    overflow: visible;
  }
  .regie-act .regie-table {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 14pt;
    line-height: 1.35;
    color: #000;
    table-layout: fixed;
    width: 100%;
    min-width: 0;
  }
  .regie-act:has(.regie-table) > .table-wrap {
    overflow: visible;
    border: 0;
    border-radius: 0;
  }
  .regie-act .regie-table th,
  .regie-act .regie-table td {
    padding: 2.5mm 1.8mm;
    color: #000;
    overflow-wrap: anywhere;
    word-break: break-word;
    vertical-align: top;
    border-bottom: 0.25mm solid #888;
  }
  .regie-act .regie-table th {
    position: static;
    background: #eee !important;
    border-bottom: 0.45mm solid #333;
  }
  .regie-act .regie-table thead {
    display: table-header-group;
    break-inside: avoid;
  }
  .regie-act .regie-table tr.no-break {
    break-inside: avoid;
    page-break-inside: avoid;
  }
  .regie-act:has(.regie-table) > h2 {
    break-after: avoid;
    page-break-after: avoid;
  }
  .regie-act .regie-table .regie-music-name {
    color: #000;
    background: transparent;
    border-color: #555;
  }
  /* Die bisherige PHP-Zahl zählt Acts, nicht die tatsächlich gedruckten
     Seiten. Im Cue-Druck ersetzen die echten Seitenzähler diese Anzeige. */
  .regie-act:has(.regie-table) > .report-section-footer > span:last-child {
    display: none;
  }
  .regie-act:has(.regie-table) > .report-section-footer {
    margin-top: 3mm;
    break-inside: avoid;
  }
}

/* 1.1.29 Tonregie-Jingleverwaltung */
.sound-jingle-block-row{display:grid;grid-template-columns:minmax(260px,1.5fr) minmax(150px,.65fr) minmax(240px,1fr) auto;gap:.65rem;align-items:center;padding:.7rem;border:1px solid var(--line,#d7e0e7);border-radius:10px}.sound-jingle-block-row>div{display:grid;gap:.15rem}.sound-jingle-block-row small{color:var(--muted,#678)}.sound-jingle-block-row input,.sound-jingle-block-row select{width:100%}@media(max-width:900px){.sound-jingle-block-row{grid-template-columns:1fr}}
