/* Shared by the player and the slide editor. Sizes are pixels at playout resolution. */
.slide { position: absolute; inset: 0; overflow: hidden; font-family: "Inter", "DejaVu Sans", "Noto Sans", "Liberation Sans", Arial, sans-serif; color: #fff; }
.slide * { box-sizing: border-box; }
.slide-bg { position: absolute; inset: 0; }
.el { position: absolute; overflow: hidden; }
.fill { width: 100%; height: 100%; display: block; border: 0; }
.fit-cover { object-fit: cover; }
.fit-contain { object-fit: contain; }
.fit-fill { object-fit: fill; }
.txt { white-space: pre-wrap; overflow-wrap: anywhere; }
.txt.clamp { display: -webkit-box; -webkit-box-orient: vertical; overflow: hidden; }
.placeholder { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; background: repeating-linear-gradient(45deg, #2a2f3a, #2a2f3a 20px, #323846 20px, #323846 40px); color: #9aa3b5; font-size: 28px; }
.clock { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; white-space: pre-line; font-variant-numeric: tabular-nums; line-height: 1.1; }
.weather { width: 100%; height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; line-height: 1.1; }
.w-now { display: flex; align-items: center; gap: .3em; font-size: 1.6em; font-weight: 800; }
.w-place, .w-desc { opacity: .85; font-size: .6em; margin: .2em 0; }
.w-days { display: flex; gap: 1.2em; margin-top: .4em; font-size: .45em; }
.w-day { display: flex; flex-direction: column; align-items: center; gap: .2em; }
.ticker { position: absolute; inset: 0; display: flex; align-items: center; overflow: hidden; white-space: nowrap; }
.tk-label { position: relative; z-index: 2; height: 100%; display: flex; align-items: center; padding: 0 .6em; font-weight: 800; text-transform: uppercase; }
.tk-track { position: relative; flex: 1; height: 100%; overflow: hidden; }
.tk-run { position: absolute; top: 50%; left: 0; transform: translate(100vw, -50%); white-space: nowrap; will-change: transform; }
.tk-sep { opacity: .6; padding: 0 1em; }
.el-slideshow img { position: absolute; inset: 0; }
.carousel-badge { position: absolute; left: 12px; bottom: 12px; z-index: 5; padding: 6px 14px; border-radius: 999px; background: rgba(10,14,22,.78); color: #fff; font-size: 22px; font-weight: 600; letter-spacing: .01em; }
.rss { position: absolute; inset: 0; display: flex; flex-direction: column; gap: var(--rss-gap); line-height: 1.2; }
.rss-item { display: flex; gap: var(--rss-gap); background: var(--rss-card); border-radius: 12px; overflow: hidden; min-height: 0; }
.rss-img { object-fit: cover; flex: none; display: block; }
.rss-text { display: flex; flex-direction: column; justify-content: center; gap: .35em; padding: calc(var(--rss-gap) * .8); min-width: 0; }
.rss-title { font-size: var(--rss-title); font-weight: 750; overflow-wrap: anywhere; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; }
.rss-desc { font-size: calc(var(--rss-title) * .6); opacity: .85; display: -webkit-box; -webkit-box-orient: vertical; overflow: hidden; }
.rss-date { font-size: calc(var(--rss-title) * .45); opacity: .65; }
/* list: one row per item, photo on the left */
.rss-list .rss-item { flex: 1; }
.rss-list .rss-img { width: 32%; height: 100%; }
/* grid: cards with the photo on top */
.rss-grid { display: grid; grid-auto-rows: 1fr; }
.rss-grid .rss-item { flex-direction: column; gap: 0; }
.rss-grid .rss-img { width: 100%; height: 55%; }
.rss-grid .rss-text { justify-content: flex-start; flex: 1; }
/* single: one item at a time, photo filling the box with the text over it */
.rss-single .rss-item { position: relative; flex: 1; border-radius: 0; background: none; }
.rss-single .rss-img { position: absolute; inset: 0; width: 100%; height: 100%; }
.rss-single .rss-text { position: absolute; left: 0; right: 0; bottom: 0; justify-content: flex-end; padding: calc(var(--rss-gap) * 2); background: linear-gradient(to top, rgba(0,0,0,.85), rgba(0,0,0,.4) 60%, transparent); }
/* social: caption under the account name */
.rss-source { font-size: calc(var(--rss-title) * .5); font-weight: 700; opacity: .8; }
.rss-caption { font-size: calc(var(--rss-title) * .75); opacity: 1; white-space: pre-line; }
/* QR code */
.qr-img { flex: 1; min-height: 0; width: 100%; object-fit: contain; }
.qr-caption { margin-top: .3em; text-align: center; line-height: 1.15; }
/* countdown */
.countdown { width: 100%; height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .25em; text-align: center; line-height: 1.1; font-variant-numeric: tabular-nums; }
.cd-label { font-size: .45em; opacity: .9; }
.cd-body { display: flex; gap: .25em; justify-content: center; }
.cd-cell { display: flex; flex-direction: column; align-items: center; min-width: 1.6em; padding: .15em .2em; border-radius: .15em; background: var(--cd-accent); }
.cd-unit { font-size: .3em; font-weight: 600; opacity: .8; text-transform: uppercase; letter-spacing: .05em; }
.cd-text { white-space: nowrap; }
.cd-done { font-size: .7em; }
/* agenda */
.agenda { position: absolute; inset: 0; display: flex; flex-direction: column; gap: calc(var(--ag-size) * .35); font-size: var(--ag-size); line-height: 1.2; overflow: hidden; }
.ag-head { font-size: 1.3em; font-weight: 800; }
.ag-day { margin-top: .3em; font-size: .7em; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--ag-accent); }
.ag-item, .ag-now { display: flex; gap: .7em; padding: .35em .5em; border-radius: .25em; background: var(--ag-card); border-left: .18em solid var(--ag-accent); }
.ag-time { flex: none; width: 6.4em; white-space: nowrap; font-weight: 700; font-variant-numeric: tabular-nums; opacity: .95; }
.ag-text { min-width: 0; display: flex; flex-direction: column; gap: .15em; }
.ag-title { font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ag-loc, .ag-desc { font-size: .7em; opacity: .8; }
.ag-desc { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; }
.ag-empty { opacity: .7; }
.ag-label { font-size: .7em; font-weight: 800; text-transform: uppercase; letter-spacing: .08em; opacity: .85; }
.ag-status { display: flex; flex-direction: column; gap: .3em; padding: .6em .7em; border-radius: .3em; }
.ag-status.free { background: rgba(48,164,108,.85); }
.ag-status.busy { background: rgba(229,72,77,.85); }
.ag-status .ag-label { font-size: 1.2em; opacity: 1; }
.ag-status .ag-now { background: none; border: 0; padding: 0; flex-direction: column; gap: .2em; font-size: 1.15em; }
.ag-status .ag-now .ag-title { white-space: normal; }
/* departure board */
.board { position: absolute; inset: 0; display: flex; flex-direction: column; font-size: var(--bd-size); line-height: 1.2; overflow: hidden; }
.bd-title { display: flex; justify-content: space-between; align-items: center; padding: .35em .6em; background: var(--bd-head); font-weight: 800; font-size: 1.1em; }
.bd-clock { font-variant-numeric: tabular-nums; }
.bd-row { display: grid; grid-template-columns: calc(var(--bd-size) * 4.4) calc(var(--bd-size) * 4.2) 1fr calc(var(--bd-size) * 3.4); align-items: center; gap: .5em; padding: .3em .6em; }
.bd-row:nth-child(odd):not(.bd-cols) { background: var(--bd-stripe); }
.bd-cols { font-size: calc(var(--bd-size) * .5); font-weight: 700; text-transform: uppercase; letter-spacing: .08em; opacity: .75; }
.bd-time { font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }
.bd-delay { color: var(--bd-late); font-size: .8em; }
.bd-badge { display: inline-block; min-width: 2.4em; padding: .05em .35em; border-radius: .2em; text-align: center; font-weight: 800; font-size: .85em; background: rgba(255,255,255,.18); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
.bd-train { background: #ffc917; color: #003082; }
.bd-dest { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-weight: 600; }
.bd-plat { text-align: center; font-weight: 700; }
.bd-plat.changed { color: var(--bd-late); }
.bd-row.cancelled .bd-time, .bd-row.cancelled .bd-dest { text-decoration: line-through; opacity: .7; }
.bd-note { margin-left: .6em; padding: 0 .3em; border-radius: .15em; background: var(--bd-late); color: #fff; font-size: .7em; text-decoration: none; display: inline-block; }
.bd-empty { padding: .5em .6em; opacity: .7; }
.board.no-plat .bd-row { grid-template-columns: calc(var(--bd-size) * 4.4) calc(var(--bd-size) * 4.2) 1fr; }
