/* Bildgrößen aus dem Original; Schrift und Farben aus den zentralen CD-Tokens. */ body.dashboard { --dashboard-text: var(--nak-black); --dashboard-meta: var(--gray-700); --panel-surface: #fff; --dashboard-unit: clamp(1px, 0.052083333vw, 2px); --panel-heading-height: calc(31 * var(--dashboard-unit)); /* Original: Board 97vh minus 7px Innenabstand, Monatsfeld 56%, Bildbereich 94%. */ --original-board-height: calc(97vh - 7px); --month-image-height: calc(var(--original-board-height) * 0.56 * 0.94); --month-aspect: 1.414; --announcement-font: var(--bible-font); --announcement-detail-font: calc(20 * var(--dashboard-unit)); --announcement-meta-font: calc(15 * var(--dashboard-unit)); --announcement-leading: 1.35; --bible-font: calc(23 * var(--dashboard-unit)); display: block; height: 100vh; height: 100dvh; min-height: 0; padding: 0; color: var(--dashboard-text); background: var(--nak-blue-light) url('cloudy.jpg') center / cover no-repeat; overflow: hidden; } .dashboard [hidden] { display: none !important; } .dashboard-main { display: grid; grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.05fr) calc(var(--month-image-height) * var(--month-aspect)); grid-template-rows: calc(var(--month-image-height) + var(--panel-heading-height)) minmax(0, 1fr); grid-template-areas: "announcements bible month" "posters posters posters"; gap: var(--space-sm); height: 100%; min-height: 0; padding: var(--space-sm); } #month-panel { grid-area: month; --panel-accent: var(--nak-purple); } #poster-panel { grid-area: posters; --panel-accent: var(--nak-orange); --poster-frame-width: 2px; } #announcements-panel { --panel-accent: var(--nak-teal); } .dashboard-column { display: grid; gap: var(--space-sm); min-height: 0; min-width: 0; } .announcements-column { grid-area: announcements; grid-template-rows: auto minmax(0, 1fr); } .bible-column { grid-area: bible; grid-template-rows: minmax(0, 1fr) auto; } .dashboard-panel { min-width: 0; min-height: 0; background: var(--panel-surface); } .dashboard-overview { display: flex; align-items: flex-end; justify-content: space-between; gap: calc(8 * var(--dashboard-unit)); padding: calc(16 * var(--dashboard-unit)) calc(12 * var(--dashboard-unit)) calc(8 * var(--dashboard-unit)); background: var(--panel-surface); box-shadow: inset 0 calc(3 * var(--dashboard-unit)) var(--nak-blue); } .dashboard-clock { display: grid; flex: 0 0 auto; justify-items: start; gap: calc(4 * var(--dashboard-unit)); } #clock, #date { width: max-content; } #clock { font-size: calc(64 * var(--dashboard-unit)); line-height: 0.9; font-weight: 500; font-variant-numeric: tabular-nums; } #date { font-size: var(--announcement-meta-font); white-space: nowrap; } .temperatures { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); min-width: 0; gap: calc(8 * var(--dashboard-unit)); margin: 0; } .temperatures > div { min-width: 0; } .temperatures dt { font-size: var(--announcement-meta-font); color: var(--dashboard-meta); } .temperatures dd { margin: 0; font-size: var(--announcement-detail-font); line-height: var(--announcement-leading); font-weight: 500; font-variant-numeric: tabular-nums; } .temperatures .is-unavailable { font-size: calc(12 * var(--dashboard-unit)); font-weight: 300; color: var(--dashboard-meta); } .image-panel, .text-panel { display: grid; grid-template-rows: var(--panel-heading-height) minmax(0, 1fr); } .panel-heading { display: flex; align-items: center; padding: calc(3 * var(--dashboard-unit)) calc(8 * var(--dashboard-unit)) 0; background: var(--panel-surface); background: color-mix(in srgb, var(--panel-accent) 12%, white); box-shadow: inset 0 calc(3 * var(--dashboard-unit)) var(--panel-accent); } .panel-heading h1, .panel-heading h2 { margin: 0; color: var(--dashboard-text); font-size: calc(20 * var(--dashboard-unit)); line-height: 1.1; font-weight: 500; } .poster-progress { width: calc(18 * var(--dashboard-unit)); height: calc(18 * var(--dashboard-unit)); margin-left: auto; flex: 0 0 auto; fill: none; stroke-width: 2; } .poster-progress-track { stroke: var(--gray-300); } .poster-progress-value { stroke: var(--panel-accent); stroke-dasharray: 100; stroke-dashoffset: 100; transform: rotate(-90deg); transform-origin: center; } .image-stage { min-height: 0; min-width: 0; padding: 0; column-gap: var(--space-sm); } #month-panel .image-stage, #poster-panel .image-stage { padding: calc(4 * var(--dashboard-unit)); } .image-sheet { display: flex; justify-content: center; align-items: center; gap: var(--space-sm); width: 100%; height: 100%; min-height: 0; } #month-panel .image-sheet { align-items: flex-start; gap: calc(4 * var(--dashboard-unit)); } .image-cell { margin: 0; min-height: 0; min-width: 0; flex: 0 0 auto; } .poster-document { display: flex; flex: 0 0 auto; gap: 0; background: #fff; border: var(--poster-frame-width) solid var(--gray-500); } .image-cell img { display: block; width: 100%; height: 100%; object-fit: contain; } .image-cell.is-cropped { position: relative; overflow: hidden; } .image-cell.is-cropped img { position: absolute; max-width: none; } .image-cell .empty-state { padding: var(--space-sm); font-size: var(--announcement-font); } .text-stage { min-height: 0; margin: calc(6 * var(--dashboard-unit)) calc(8 * var(--dashboard-unit)); overflow: hidden; position: relative; } #announcements-panel .text-stage { margin: 0; } #announcements-panel .text-stage > .empty-state { padding: 0 calc(10 * var(--dashboard-unit)); } .text-page { color: var(--dashboard-text); } .text-page p { margin: 0 0 var(--space-xs); white-space: pre-wrap; overflow-wrap: anywhere; font-size: var(--announcement-font); line-height: var(--announcement-leading); } .text-page p:last-child { margin-bottom: 0; } .text-page .announcement-title, .text-page .bible-reference { font-weight: 500; } .text-page .announcement-subtitle { font-size: var(--announcement-detail-font); color: var(--dashboard-meta); } .text-page .announcement-meta { font-size: var(--announcement-meta-font); color: var(--dashboard-meta); } .announcement-list { max-width: none; margin: 0; padding: 0; list-style: none; } /* Originale Zeilenaufteilung: Datum links, Inhalt mit Zeit/Ort rechts. */ .announcement-entry { display: grid; grid-template-columns: calc(100 * var(--dashboard-unit)) minmax(0, 1fr); gap: calc(12 * var(--dashboard-unit)); padding: calc(6 * var(--dashboard-unit)) calc(10 * var(--dashboard-unit)); border-bottom: 1px solid var(--gray-300); background: var(--panel-surface); } .announcement-entry:nth-child(even) { background: var(--gray-50); } .announcement-content { min-width: 0; } .announcement-entry p { margin: 0; } .announcement-content .announcement-meta { font-style: italic; } .announcement-when { min-width: 0; font-weight: 300; color: var(--dashboard-meta); font-variant-numeric: tabular-nums; } .announcement-when p { margin-bottom: 0; font-size: var(--announcement-detail-font); } .bible-panel { --panel-accent: var(--nak-yellow); } .bible-panel .text-stage { margin-inline: calc(24 * var(--dashboard-unit)); margin-top: calc(12 * var(--dashboard-unit)); } .bible-panel .text-page { max-width: none; } #departures-panel { --panel-accent: var(--nak-darkblue); height: calc(161 * var(--dashboard-unit)); } #departures-panel .text-stage { margin: 0; } #departures-title { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: calc(18 * var(--dashboard-unit)); } .departures-list { max-width: none; margin: 0; padding: 0; list-style: none; } .departure-row { --departure-color: var(--gray-500); display: grid; grid-template-columns: calc(38 * var(--dashboard-unit)) minmax(0, 1fr) calc(52 * var(--dashboard-unit)) calc(80 * var(--dashboard-unit)); align-items: center; gap: calc(6 * var(--dashboard-unit)); height: calc(26 * var(--dashboard-unit)); padding: 0 calc(5 * var(--dashboard-unit)) 0 calc(8 * var(--dashboard-unit)); border-right: calc(6 * var(--dashboard-unit)) solid var(--departure-color); background: var(--panel-surface); font-size: var(--announcement-meta-font); line-height: 1.2; } .departure-row:nth-child(even) { background: var(--gray-50); } .departure-row.is-ontime, .departure-row.is-scheduled { --departure-color: var(--nak-darkgreen); } .departure-row.is-delayed { --departure-color: var(--nak-orange); } .departure-row.is-early, .departure-row.is-cancelled { --departure-color: var(--nak-red); } .departure-line { font-weight: 500; } .departure-direction { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } .departure-remaining, .departure-status { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; } #departures-panel .empty-state { padding: calc(8 * var(--dashboard-unit)); font-size: var(--announcement-meta-font); } .text-stage.is-overflowing::after { content: ""; position: absolute; inset: auto 0 0; height: calc(24 * var(--dashboard-unit)); background: linear-gradient(to bottom, transparent, var(--panel-surface)); pointer-events: none; } .empty-state { margin: 0; font-size: var(--announcement-font); line-height: var(--announcement-leading); color: var(--dashboard-meta); } .image-stage > .empty-state { padding: var(--space-md); } .dashboard noscript { position: fixed; bottom: 0; padding: var(--space-lg); background: #fff; color: var(--nak-red); } @media (max-width: 999px), (max-height: 599px) { body.dashboard { height: auto; min-height: 100vh; overflow: visible; } .dashboard-main { height: auto; grid-template-columns: minmax(0, 1fr); grid-template-areas: "announcements" "bible" "month" "posters"; grid-template-rows: 520px 520px 65vh 55vh; } }