/* Copied from diora-android 6a0a362 2026-11-09: the podcast parts of web-native/static/native.css (bottom sheet, podcasts) by tools/sync_podcast_ui.py. Do not edit here. The web's own additions are in podcasts-web.css. */ /* ---- bottom sheet ---------------------------------------------------------------- */ /* Monospace stays the brand's (headings, tabs, numbers); reading text — titles, episode lines, show notes, descriptions, hints — is the system's sans (no font download). */ :root { --nui-sans: system-ui, -apple-system, 'Segoe UI', Roboto, 'Noto Sans', 'Helvetica Neue', Arial, sans-serif; } #nui-sheet { position: fixed; inset: 0; z-index: 900; } .nui-backdrop { position: absolute; inset: 0; background: var(--scrim, rgba(0, 0, 0, 0.6)); } .nui-panel { position: absolute; left: 0; right: 0; bottom: 0; max-height: 80vh; overflow-y: auto; background: var(--nui-panel); border-top: 1px solid var(--border); border-radius: 12px 12px 0 0; padding: 8px 0 12px; animation: nui-up 0.18s ease-out; } @keyframes nui-up { from { transform: translateY(40px); opacity: 0; } to { transform: none; opacity: 1; } } .nui-sheet-title { padding: 10px 20px 8px; font-size: 12px; font-weight: 400; color: var(--nui-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .nui-row, .nui-row-main { display: flex; align-items: center; gap: 14px; width: 100%; min-height: 52px; padding: 6px 20px; background: none; border: none; color: var(--fg); font: inherit; font-size: 15px; text-align: left; cursor: pointer; } .nui-row:active, .nui-row-main:active { background: var(--hover, #1d1d1d); } .nui-row-icon { width: 24px; text-align: center; flex-shrink: 0; font-size: 18px; } .nui-row-text { display: flex; flex-direction: column; min-width: 0; } .nui-row-hint { font-family: var(--nui-sans); font-size: 13px; font-weight: 400; letter-spacing: normal; line-height: 1.35; color: var(--nui-muted); } /* Red only where it's meant: the destructive choice in a confirmation. What is set is bright and bold. */ .nui-danger { color: var(--accent); } .nui-active .nui-row-label { color: var(--fg, #fff); font-weight: 700; } .nui-active .nui-row-hint { color: var(--fg, #fff); } .nui-row-split { padding: 0 16px 0 0; } .nui-row-split .nui-row-main { flex: 1; width: auto; } .nui-seg { display: inline-flex; border: 1px solid var(--border); border-radius: 4px; overflow: hidden; } .nui-seg button { min-width: 44px; min-height: 34px; background: none; border: none; color: var(--nui-muted); font: inherit; } .nui-seg button.nui-seg-on { background: var(--fg); color: var(--bg); } /* ---- podcasts (phones only: html.nui-podcasts, see native-podcast.js) ------------ */ html.nui-podcasts #tab-podcasts > :not(#nui-pod) { display: none !important; } html.nui-pod-playing #nui-mini { display: none !important; } /* One player for both: the podcast bar shows the radio too. */ html.nui-one-player #nui-mini { display: none !important; } .nui-mini-radio .nui-pod-art, .nui-radio-art { display: flex; align-items: center; justify-content: center; } .nui-mini-radio .nui-pod-art:empty::after, .nui-radio-art:empty::after { content: '◉'; color: var(--accent); font-size: 22px; } .nui-radio-art:empty::after { font-size: 96px; } .nui-mini-radio .nui-pod-art img, .nui-radio-art img { object-fit: contain; background: #fff; } .nui-radio-live { text-align: center; font-size: 13px; color: var(--nui-muted); letter-spacing: 0.04em; } .nui-radio-live.on { color: var(--accent); font-weight: 700; } .nui-radio-stations { align-self: center; } #nui-pod-bar { display: flex; align-items: center; gap: 2px; margin: 0 -4px 8px 0; } #nui-pod-bar .native-brand { font-size: 22px; font-weight: 700; letter-spacing: 0.04em; } .nui-pod-status { font-size: 12px; font-weight: 400; color: var(--nui-muted); } .nui-pod-tabs { display: flex; margin: 0 0 8px; border-bottom: 1px solid var(--border); overflow-x: auto; scrollbar-width: none; } .nui-pod-tab { flex: 1 1 auto; min-width: 0; min-height: var(--nui-tap); padding: 0 5px; display: inline-flex; align-items: center; justify-content: center; gap: 4px; border: none; border-bottom: 2px solid transparent; background: none; color: var(--nui-muted); font: inherit; font-size: 13px; letter-spacing: 0; white-space: nowrap; } .nui-pod-tab.active { color: var(--fg, #fff); font-weight: 700; border-bottom-color: var(--fg, #fff); } .nui-pod-count { min-width: 18px; padding: 1px 5px; border-radius: 9px; background: var(--raised, #2a2a2a); color: var(--fg, #ddd); font-size: 10.5px; font-weight: 700; letter-spacing: 0; text-align: center; font-variant-numeric: tabular-nums; } .nui-pod-count-queue { background: var(--accent); color: var(--on-accent, #fff); } .nui-pod-summary { padding: 6px 2px 10px; font-size: 12px; color: var(--nui-muted); } /* Where audiobook subscriptions went (they are in the library, see audiobooks.js). */ .nui-pod-hint { padding: 14px 2px; font-size: 13px; color: var(--nui-muted); font-family: var(--nui-sans); letter-spacing: normal; } /* ---- gestures (native-gestures.js, native-podcast.js) ---- */ #nui-gesture-sign { position: fixed; left: 50%; top: 42%; transform: translate(-50%, -50%); z-index: 995; padding: 12px 20px; border-radius: 12px; background: rgba(0, 0, 0, 0.78); color: #fff; font-size: 18px; font-weight: 700; opacity: 0; pointer-events: none; transition: opacity 0.2s; } #nui-gesture-sign.nui-show { opacity: 1; } #nui-pull { position: fixed; left: 50%; top: 0; z-index: 995; width: 40px; height: 40px; border-radius: 50%; display: flex; align-items: center; justify-content: center; background: var(--panel, #111); border: 1px solid var(--border); color: var(--nui-muted); font-size: 20px; transform: translate(-50%, -48px); opacity: 0; pointer-events: none; transition: opacity 0.15s; } #nui-pull.nui-show { opacity: 1; } #nui-pull.nui-ready { color: var(--accent); border-color: var(--accent); } .nui-pod-art-player { position: relative; } .nui-pod-cover-skip { position: absolute; top: 50%; transform: translateY(-50%); padding: 10px 14px; border-radius: 22px; background: rgba(0, 0, 0, 0.7); color: #fff; font-weight: 700; font-size: 16px; pointer-events: none; animation: nui-cover-skip 0.7s ease-out forwards; } .nui-pod-cover-skip.nui-left { left: 12px; } .nui-pod-cover-skip.nui-right { right: 12px; } @keyframes nui-cover-skip { from { opacity: 1; } to { opacity: 0; } } body.eink #nui-gesture-sign { background: #000; transition: none; } body.eink #nui-pull { transition: none; } /* A hint that leads somewhere (Abos & Quellen). */ button.nui-pod-link { display: block; width: 100%; border: none; background: none; text-align: left; cursor: pointer; padding: 4px 2px 12px; } .nui-pod-empty { padding: 32px 12px; color: var(--nui-muted); text-align: center; line-height: 1.5; font-family: var(--nui-sans); letter-spacing: normal; font-weight: 400; font-size: 14px; } .nui-pod-list { display: flex; flex-direction: column; } /* Headings by time in the episode lists (Heute, Gestern, Diese Woche, …). */ .nui-pod-when { padding: 14px 2px 4px; font-size: 12px; text-transform: uppercase; letter-spacing: 0.08em; color: var(--nui-muted); font-family: var(--nui-sans); } .nui-pod-when:first-child { padding-top: 4px; } .nui-pod-player-link { cursor: pointer; } .nui-pod-player-link:active { opacity: 0.6; } /* The two lists (docs/podcasts.md): four tabs that fit a phone, the Merkliste by podcast, the Strom bundled. */ .nui-pod-tabs-v2 .nui-pod-tab { font-size: 13px; padding-left: 4px; padding-right: 4px; } .nui-pod-group { display: flex; align-items: center; gap: 10px; width: 100%; padding: 8px 2px; background: none; border: none; border-bottom: 1px solid var(--nui-line, rgba(127,127,127,.2)); color: inherit; font: inherit; text-align: left; cursor: pointer; } .nui-pod-group .nui-pod-art, .nui-pod-group img { width: 40px; height: 40px; flex: none; } .nui-pod-group-text { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1; } .nui-pod-group-title { font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .nui-pod-group .nui-pod-meta { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .nui-pod-group-count { font-size: 12px; color: var(--nui-muted); flex: none; } .nui-pod-chev { flex: none; width: 18px; text-align: center; color: var(--nui-muted); } .nui-pod-later .nui-pod-row { padding-left: 14px; } .nui-pod-mini { min-width: 34px; padding: 0 4px; font-size: 17px; color: var(--nui-muted); flex: none; } .nui-pod-mini.on { color: var(--accent, #e63946); } .nui-pod-fresh .nui-pod-title::before { content: ''; display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: var(--accent, #e63946); margin-right: 6px; vertical-align: middle; } .nui-pod-bundle.nui-pod-fresh::before { content: ''; display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: var(--accent, #e63946); margin-right: 6px; vertical-align: middle; } .nui-pod-bundle { align-self: flex-start; margin: -2px 0 6px 56px; padding: 4px 0; background: none; border: none; color: var(--nui-muted); font: inherit; font-size: 12px; cursor: pointer; } .nui-pod-bundled { padding-left: 14px; } /* Stöbern (docs/podcasts.md). */ .nui-pod-browsehead { align-items: center; gap: 6px; justify-content: flex-start; } .nui-pod-browsetitle { font-weight: 600; font-size: 15px; flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .nui-pod-browsechips { flex-wrap: wrap; overflow: visible; } .nui-pod-chipcount { opacity: 0.6; font-size: 11px; } .nui-pod-browsesec { margin-bottom: 6px; } .nui-pod-reco .nui-pod-main { cursor: pointer; } .nui-pod-reco-desc { white-space: normal; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } .nui-pod-similar { margin-top: 12px; } .nui-pod-row { display: flex; align-items: center; gap: 10px; min-height: 58px; padding: 5px 0; border-bottom: 1px solid var(--border); background: var(--bg); -webkit-tap-highlight-color: transparent; } .nui-pod-row:active { background: var(--hover, #141414); } .nui-pod-row.nui-pod-played .nui-pod-title { color: var(--nui-muted); font-weight: 400; } .nui-pod-row.nui-pod-gone { display: none; } .nui-pod-row.nui-pod-current .nui-pod-title { color: var(--accent); } .nui-pod-row.nui-pod-current .nui-pod-title::before { content: '▶ '; } .nui-pod-art { flex: none; width: 46px; height: 46px; border-radius: 4px; overflow: hidden; background: var(--raised, #1c1c1c); display: flex; align-items: center; justify-content: center; } /* No cover anywhere: the podcast's initial on a neutral tile. */ .nui-pod-initial { font-size: 20px; font-weight: 700; color: var(--muted, #6a6a6a); line-height: 1; } .nui-pod-art-big .nui-pod-initial { font-size: 30px; } .nui-pod-art-player .nui-pod-initial { font-size: 96px; } .nui-pod-art img { width: 100%; height: 100%; object-fit: cover; display: block; } .nui-pod-art-big { width: 64px; height: 64px; } .nui-pod-art-mini { width: 44px; height: 44px; margin-left: 10px; } .nui-pod-art-player { width: min(64vw, 300px); height: min(64vw, 300px); border-radius: 8px; align-self: center; } .nui-pod-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; } .nui-pod-title { font-family: var(--nui-sans); font-size: 14px; font-weight: 600; letter-spacing: normal; line-height: 1.22; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; overflow-wrap: anywhere; } .nui-pod-meta { font-family: var(--nui-sans); font-size: 12px; font-weight: 400; letter-spacing: normal; font-variant-numeric: tabular-nums; color: var(--nui-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .nui-pod-progress { height: 3px; margin-top: 2px; border-radius: 2px; background: var(--raised, #2a2a2a); overflow: hidden; max-width: 160px; } .nui-pod-progress > span { display: block; height: 100%; background: var(--accent); } .nui-pod-badge { flex: none; padding: 3px 7px; border: 1px solid var(--border); border-radius: 10px; font-size: 11px; color: var(--nui-muted); } .nui-pod-queued { color: var(--green); } /* Narrow, and off the screen's edge: a swipe starting at the very edge (or sideways on the handle, see dragSort) is the row's swipe; only a vertical drag on the handle sorts. */ .nui-pod-handle { flex: none; width: 28px; height: var(--nui-tap); margin-right: 10px; display: flex; align-items: center; justify-content: center; font-size: 22px; color: var(--nui-muted); touch-action: none; cursor: grab; } .nui-pod-queue .nui-pod-row { transition: transform 0.15s ease; } .nui-pod-queue .nui-pod-row.nui-pod-dragging { transition: none; position: relative; z-index: 2; background: var(--raised, #1a1a1a); box-shadow: 0 6px 18px rgba(0, 0, 0, 0.6); } .nui-pod-feedhead { display: flex; align-items: center; gap: 10px; margin: 2px 0 6px; } .nui-pod-feedhead > .nui-icon:first-child { min-width: 32px; margin-left: -6px; } .nui-pod-feedhead .nui-pod-title { font-size: 16px; } .nui-pod-feedhead .nui-pod-infobtn { min-width: 38px; } .nui-pod-search { display: flex; gap: 8px; margin: 4px 0 10px; } .nui-pod-search input { flex: 1; min-width: 0; min-height: var(--nui-tap); font-size: 16px; } .nui-pod-search .btn { min-height: var(--nui-tap); } /* mini player in the bottom bar */ #nui-pod-mini { position: relative; display: flex; align-items: center; gap: 2px; height: 64px; padding: 0 4px 0 0; border-bottom: 1px solid var(--border); } #nui-pod-mini[hidden] { display: none; } #nui-pod-mini [hidden] { display: none !important; } .nui-pod-mini-bar { position: absolute; left: 0; right: 0; top: -1px; height: 2px; background: var(--raised, #2a2a2a); } .nui-pod-mini-bar span { display: block; height: 100%; background: var(--accent); } .nui-pod-skip { font-size: 20px; } /* full player */ #nui-pod-player { position: fixed; inset: 0; z-index: 880; background: var(--scrim, rgba(0, 0, 0, 0.6)); display: flex; align-items: flex-end; } .nui-pod-player-panel { width: 100%; max-height: 100%; overflow-y: auto; background: var(--panel, #0b0b0b); border-top: 1px solid var(--border); border-radius: 14px 14px 0 0; padding: 8px 20px calc(24px + env(safe-area-inset-bottom, 0px)); display: flex; flex-direction: column; gap: 12px; } .nui-pod-player-top { display: flex; justify-content: center; } .nui-pod-player-top .nui-icon { font-size: 26px; color: var(--nui-muted); } .nui-pod-player-title { font-family: var(--nui-sans); font-size: 18px; font-weight: 600; letter-spacing: normal; line-height: 1.3; text-align: center; } .nui-pod-player-feed { margin-top: -6px; font-family: var(--nui-sans); font-size: 13.5px; font-weight: 400; letter-spacing: normal; color: var(--nui-muted); text-align: center; } .nui-pod-seek { width: 100%; accent-color: var(--accent); height: 28px; } .nui-pod-times { display: flex; justify-content: space-between; margin-top: -8px; font-size: 12px; color: var(--nui-muted); font-variant-numeric: tabular-nums; } .nui-pod-controls { display: flex; align-items: center; justify-content: center; gap: 28px; } .nui-pod-controls .nui-icon { font-size: 18px; font-weight: 700; } .nui-pod-back::before { content: '↺'; font-size: 26px; margin-right: 2px; } .nui-pod-fwd::after { content: '↻'; font-size: 26px; margin-left: 2px; } .nui-pod-play { width: 72px; height: 72px; border-radius: 50%; background: var(--accent) !important; color: var(--on-accent, #fff) !important; font-size: 26px !important; } .nui-pod-extra { display: flex; justify-content: space-around; } .nui-pod-speed { font-size: 15px !important; font-weight: 700; min-width: 64px; } /* Another device plays (player sync): the bar and the player show it and control it there. */ .nui-mini-remote .nui-mini-track, .nui-pod-remote-line { color: var(--accent); } .nui-pod-remote-line { font-weight: 700; } .nui-mini-devices, .nui-mini-here { font-size: 20px; } .nui-pod-here, .nui-pod-devbtn { align-self: center; min-height: var(--nui-tap); } .nui-pod-devnote { padding: 8px 16px 4px; } body.eink .nui-mini-remote .nui-mini-track, body.eink .nui-pod-remote-line { color: #000; } /* e-reader mode on a phone: black on white */ body.eink .nui-pod-row { background: #fff; } body.eink .nui-pod-row:active { background: #ddd; } body.eink .nui-pod-count { background: #ddd; color: #000; } body.eink .nui-pod-tab.active { border-bottom-color: #000; color: #000; } body.eink .nui-pod-progress { background: #ccc; } body.eink .nui-pod-progress > span, body.eink .nui-pod-mini-bar span { background: #000; } body.eink .nui-pod-row.nui-pod-current .nui-pod-title { color: #000; } body.eink .nui-pod-player-panel { background: #fff; border-top: 2px solid #000; } body.eink .nui-pod-play { background: #000 !important; } body.eink .nui-pod-art { background: #eee; } /* podcast queue tools: sort, choose several, lock */ .nui-pod-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; } .nui-pod-head .nui-pod-summary { padding: 6px 2px; } .nui-pod-tools { display: flex; align-items: center; margin-right: -6px; } .nui-pod-tools .nui-icon { font-size: 18px; color: var(--nui-muted); } .nui-pod-lock.on { color: var(--fg, #fff) !important; } .nui-pod-selbar { position: sticky; top: 0; z-index: 5; display: flex; flex-wrap: wrap; align-items: center; gap: 4px 6px; margin: 0 -12px 4px; padding: 6px 12px 8px; background: var(--bg); border-bottom: 1px solid var(--border); } .nui-pod-selcount { flex: 1; min-width: 0; font-size: 14px; font-weight: 700; } .nui-pod-selactions { flex-basis: 100%; display: flex; flex-wrap: wrap; gap: 6px; } .nui-pod-selactions .btn { min-height: 38px; flex: 1 0 auto; } .nui-pod-selactions .btn:disabled { opacity: 0.4; } .nui-pod-check { flex: none; width: 28px; font-size: 22px; color: var(--nui-muted); text-align: center; } .nui-pod-check.on { color: var(--fg, #fff); } .nui-pod-row.nui-pod-selecting { user-select: none; -webkit-user-select: none; } body.eink .nui-pod-check.on, body.eink .nui-pod-lock.on { color: #000 !important; } body.eink .nui-pod-selbar { background: #fff; } /* podcast chips (the list filters), sleep timer */ .nui-pod-chip { display: inline-flex; align-items: baseline; gap: 6px; min-height: 36px; padding: 6px 12px; border: 1px solid var(--border); border-radius: 18px; background: none; color: var(--nui-muted); font: inherit; font-size: 13px; } .nui-pod-chip strong { color: inherit; font-weight: 700; } .nui-pod-chip.on { border-color: var(--border-strong, #8a8a8a); color: var(--fg, #fff); font-weight: 700; } .nui-pod-sleep { font-size: 15px !important; white-space: nowrap; } .nui-pod-sleep.on { color: var(--accent) !important; font-weight: 700; } body.eink .nui-pod-chip.on { border-color: #000; } body.eink .nui-pod-chip.on strong, body.eink .nui-pod-sleep.on { color: #000 !important; } /* podcast chapters and shownotes */ /* flex: none – in the sheet's scrolling column the box would otherwise shrink to its 40 px and the notes spill over what comes after (the similar episodes). */ .nui-pod-notesbox { flex: none; margin-top: 6px; border-top: 1px solid var(--border); padding-top: 6px; min-height: 40px; } .nui-pod-subtabs { display: flex; gap: 4px; margin-bottom: 6px; } .nui-pod-subtab { min-height: 36px; padding: 0 12px; border: none; border-bottom: 2px solid transparent; background: none; color: var(--nui-muted); font: inherit; font-size: 14px; } .nui-pod-subtab.active { color: inherit; font-weight: 700; border-bottom-color: var(--fg, #fff); } .nui-pod-chapters { list-style: none; margin: 0; padding: 0; } .nui-pod-chapter { display: grid; grid-template-columns: 4.5em 1fr; gap: 10px; align-items: baseline; padding: 10px 4px; border-bottom: 1px solid var(--border); font-size: 14px; cursor: pointer; } .nui-pod-chapter-title { font-family: var(--nui-sans); letter-spacing: normal; font-weight: 400; font-size: 14.5px; } .nui-pod-chapter.current .nui-pod-chapter-title { font-weight: 600; } .nui-pod-chapter-t { color: var(--nui-muted); font-size: 12px; font-variant-numeric: tabular-nums; } .nui-pod-chapter.current { color: var(--accent); font-weight: 700; } .nui-pod-chapter.current .nui-pod-chapter-t { color: var(--accent); } .nui-pod-notes { font-family: var(--nui-sans); font-size: 14.5px; font-weight: 400; letter-spacing: normal; line-height: 1.55; overflow-wrap: anywhere; } .nui-pod-notes img { max-width: 100%; height: auto; } .nui-pod-notes a { color: inherit; text-decoration: underline; text-decoration-color: var(--muted, #777); } .nui-pod-notes .nui-pod-stamp { font-weight: 700; text-decoration: none; border-bottom: 1px dotted currentColor; } .nui-pod-notes table { display: block; overflow-x: auto; } .nui-pod-notes-sheet .nui-pod-player-panel { max-height: 88%; } .nui-pod-notes-play { align-self: center; min-height: var(--nui-tap); } /* The episode screen (a tap on a row): head, the big play button, the actions, then notes. */ .nui-pod-episode .nui-pod-player-panel { max-height: 92%; } .nui-pod-ephead { display: flex; align-items: flex-start; gap: 12px; } .nui-pod-ephead .nui-pod-art-big { width: 88px; height: 88px; border-radius: 6px; flex: none; } .nui-pod-ephead .nui-pod-player-title { text-align: left; font-size: 17px; } .nui-pod-eplink { align-self: flex-start; border: none; background: none; padding: 4px 0; color: var(--nui-muted); font: inherit; font-size: 14px; text-align: left; cursor: pointer; text-decoration: underline; text-decoration-color: var(--border-strong, #555); } .nui-pod-epplay { align-self: stretch; font-size: 16px; font-weight: 700; } .nui-pod-epactions { display: grid; grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); gap: 6px; } .nui-pod-epact { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; min-height: 60px; padding: 6px 4px; border: 1px solid var(--border); border-radius: 8px; background: none; color: inherit; font: inherit; font-size: 12.5px; line-height: 1.2; text-align: center; cursor: pointer; } .nui-pod-epact-icon { font-size: 20px; line-height: 22px; } .nui-pod-epact.on .nui-pod-epact-icon { color: var(--accent); } .nui-pod-epact-danger { color: var(--red, #e5484d); } /* Transcript and article of an episode (the Transkript / Artikel tabs, the transcription settings). */ .nui-pod-tr { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; padding: 6px 2px; } .nui-pod-tr-status { font-size: 14.5px; font-weight: 600; } .nui-pod-tr-error { font-size: 14px; color: var(--red, #e5484d); } .nui-pod-tr-origin { margin-bottom: 6px; font-style: italic; } .nui-pod-trbar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 4px 0 10px; } .nui-pod-trbtn { min-height: 40px; } .nui-pod-article h2 { font-size: 17px; margin: 1.2em 0 0.2em; } .nui-pod-article p { margin: 0.5em 0; } .nui-pod-article blockquote { margin: 0.6em 0; padding-left: 12px; border-left: 3px solid var(--border); } .nui-pod-trform { display: flex; flex-direction: column; gap: 10px; } .nui-pod-trfield { display: flex; flex-direction: column; gap: 4px; font-size: 13px; color: var(--nui-muted); } .nui-pod-trfield input, .nui-pod-trfield select { width: 100%; box-sizing: border-box; font-size: 15px; color: inherit; } .nui-pod-trfield[hidden] { display: none; } body.eink .nui-pod-tr-error { color: #000; } body.eink .nui-pod-epact { border-color: #000; color: #000; } body.eink .nui-pod-epact-danger { color: #000; } body.eink .nui-pod-chapter.current, body.eink .nui-pod-chapter.current .nui-pod-chapter-t, body.eink .nui-pod-notes a { color: #000; } body.eink .nui-pod-subtab.active { border-bottom-color: #000; color: #000; } /* ---- podcast downloads (Downloads.kt; the "downloads" block of native-podcast.js) ---- */ .nui-pod-dl { min-width: 36px !important; margin-left: -6px; font-size: 22px; color: var(--nui-muted); } .nui-pod-dl-failed { color: var(--yellow); } /* ✓ in a ring: set apart from the plain green ✓ of "in der Warteschlange" */ .nui-pod-dl.nui-pod-dl-done { position: relative; font-size: 12px; font-weight: 700; color: var(--green); } .nui-pod-dl-done::after { content: ''; position: absolute; width: 20px; height: 20px; left: 50%; top: 50%; margin: -11px 0 0 -11px; border: 1px solid var(--green); border-radius: 50%; } .nui-pod-dl-ring > span { width: 26px; height: 26px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 9px; font-weight: 700; color: var(--nui-muted); background: radial-gradient(closest-side, var(--bg) 78%, transparent 80% 100%), conic-gradient(var(--muted, #d0d0d0) var(--p, 0%), var(--raised, #2a2a2a) 0); } body.eink .nui-pod-dl-done { color: #000; } body.eink .nui-pod-dl-done::after { border-color: #000; } body.eink .nui-pod-dl-ring > span { color: #000; background: radial-gradient(closest-side, #fff 78%, transparent 80% 100%), conic-gradient(#000 var(--p, 0%), #ccc 0); } /* the top bar's "↓ 3/68" and the downloads overview (openDownloads) */ .nui-pod-dlind { min-width: 0 !important; padding: 0 8px; font-size: 13px !important; font-weight: 700; color: var(--fg, #fff); white-space: nowrap; font-variant-numeric: tabular-nums; } .nui-pod-dlind[hidden] { display: none !important; } .nui-pod-dls .nui-pod-player-panel { min-height: 50%; } .nui-pod-dls-head { display: flex; flex-direction: column; gap: 2px; } .nui-pod-dls-head .nui-pod-summary { padding: 0 2px; text-align: center; } .nui-pod-dls-head .nui-pod-offer-row { justify-content: center; } .nui-pod-dls-head .btn { min-width: 0 !important; padding: 0 14px; font-size: 15px !important; } .nui-pod-dls-sec { margin-top: 10px; padding: 4px 2px; font-size: 12px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; color: var(--nui-muted); border-bottom: 1px solid var(--border); } .nui-pod-dlrow { display: flex; align-items: center; gap: 4px; min-height: 56px; padding: 6px 0; border-bottom: 1px solid var(--border); -webkit-tap-highlight-color: transparent; } .nui-pod-dlrow:active { background: var(--hover, #141414); } .nui-pod-dlrow .nui-pod-title { font-size: 14px; -webkit-line-clamp: 1; } .nui-pod-dlrow .nui-icon { font-size: 18px; color: var(--nui-muted); } .nui-pod-dlrow-failed .nui-pod-dlstatus { color: var(--yellow); } .nui-pod-dls-done { padding: 8px 2px; white-space: normal; } body.eink .nui-pod-dlind { color: #000; } body.eink .nui-pod-dlrow:active { background: #ddd; } body.eink .nui-pod-dlrow-failed .nui-pod-dlstatus { color: #000; font-weight: 700; } body.eink .nui-pod-dls-sec { color: #000; border-bottom-color: #000; } /* tab row scrolls sideways without a visible bar; the lock emoji in the app's greys */ .nui-pod-tabs::-webkit-scrollbar { display: none; } .nui-pod-lock { filter: grayscale(1); opacity: 0.6; } .nui-pod-lock.on { opacity: 1; filter: grayscale(1) brightness(1.4); } /* episode filters: one row that scrolls sideways */ .nui-pod-filters { display: flex; gap: 6px; overflow-x: auto; padding: 6px 0 10px; scrollbar-width: none; } .nui-pod-filters::-webkit-scrollbar { display: none; } .nui-pod-filters .nui-pod-chip { flex: none; } .nui-pod-more { display: block; margin: 12px auto; min-height: var(--nui-tap); } .nui-pod-star { color: var(--yellow); } .nui-pod-fav.on { color: var(--yellow) !important; } .nui-pod-stat-total { display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 12px 0 18px; } .nui-pod-stat-total strong { font-size: 30px; } .nui-pod-stat-total span { font-size: 13px; color: var(--nui-muted); } .nui-pod-stat-row { display: flex; align-items: center; gap: 12px; padding: 8px 0; border-bottom: 1px solid var(--border); } .nui-pod-stat-bar { max-width: none; height: 5px; } body.eink .nui-pod-star, body.eink .nui-pod-fav.on { color: #000 !important; } /* feed errors, chapter navigation, transcript */ .nui-pod-feederr { font-size: 12px; color: var(--yellow); } .nui-pod-offer { padding: 10px 12px; margin: 8px 0; border: 1px solid var(--nui-muted); border-radius: 6px; line-height: 1.45; font-size: 14px; font-family: var(--nui-sans); letter-spacing: normal; font-weight: 400; } .nui-pod-offer-row { display: flex; gap: 8px; margin-top: 8px; } .nui-pod-feederr-box { padding: 8px 10px; margin: 4px 0 8px; border: 1px solid var(--yellow); border-radius: 6px; line-height: 1.4; } .nui-pod-transcript { max-height: 60vh; overflow-y: auto; padding-right: 4px; } .nui-pod-seg { margin: 0; padding: 6px 4px; font-family: var(--nui-sans); letter-spacing: normal; font-weight: 400; font-size: 14.5px; line-height: 1.5; color: var(--nui-muted); border-radius: 4px; cursor: pointer; } .nui-pod-seg.current { color: inherit; background: var(--raised, #1a1a1a); } .nui-pod-speaker { color: inherit; } body.eink .nui-pod-feederr { color: #000; } body.eink .nui-pod-feederr-box { border-color: #000; } body.eink .nui-pod-offer { border-color: #000; } body.eink .nui-pod-seg { color: #444; } body.eink .nui-pod-seg.current { color: #000; background: #e6e6e6; } /* lists: search sections, the number at a podcast, its info page */ .nui-pod-sec { margin-top: 14px; padding: 4px 2px; font-size: 12px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; color: var(--nui-muted); border-bottom: 1px solid var(--border); } .nui-pod-search + .nui-pod-sec { margin-top: 4px; } .nui-pod-sec-note { padding: 10px 2px; font-size: 13px; color: var(--nui-muted); } .nui-pod-feedcount { flex: none; } .nui-pod-infobtn { flex: none; font-size: 20px; color: var(--nui-muted); } .nui-pod-info-desc { font-family: var(--nui-sans); letter-spacing: normal; font-size: 14.5px; font-weight: 400; line-height: 1.5; white-space: pre-line; overflow-wrap: anywhere; padding: 4px 0 10px; border-bottom: 1px solid var(--border); } .nui-pod-facts { font-weight: 400; display: grid; grid-template-columns: max-content 1fr; gap: 8px 14px; margin: 10px 0 4px; font-size: 14px; } .nui-pod-facts dt { color: var(--nui-muted); } .nui-pod-facts dd { margin: 0; min-width: 0; font-weight: 400; overflow-wrap: anywhere; } .nui-pod-facts a { color: inherit; text-decoration: underline; text-decoration-color: var(--muted, #777); } .nui-pod-info-url { display: block; font-size: 12px; color: var(--nui-muted); } .nui-pod-info-actions { display: flex; gap: 8px; margin-top: 6px; } .nui-pod-info-actions .btn { min-height: 36px; padding: 0 14px; font-size: 14px; } body.eink .nui-pod-sec { color: #000; border-bottom-color: #000; } body.eink .nui-pod-facts a { color: #000; text-decoration: underline; } /* ---- UI round: rows, swipes, the feed page's line, the player's chapters ------------------ */ /* the row's one action, its menu, the download mark */ .nui-pod-row > .nui-icon { min-width: 40px; } .nui-pod-row > .nui-pod-menu { min-width: 34px; font-size: 18px; color: var(--nui-muted); margin-right: -4px; } .nui-pod-playbtn { font-size: 17px !important; color: var(--accent); } .nui-pod-row > .nui-pod-dl { min-width: 40px !important; margin-left: 0; } .nui-pod-dlmark { display: inline-flex; align-items: center; justify-content: center; width: 14px; height: 14px; margin-right: 5px; vertical-align: -2px; border-radius: 50%; border: 1px solid var(--border-strong, #8a8a8a); font-size: 9px; font-weight: 700; line-height: 1; color: var(--muted, #cfcfcf); } .nui-pod-dlmark-done { background: var(--raised, #3a3a3a); border-color: var(--raised, #3a3a3a); color: var(--fg, #fff); } .nui-pod-dlmark-failed { border-color: var(--yellow); color: var(--yellow); } .nui-pod-dlmark-queued, .nui-pod-dlmark-downloading { border: none; background: radial-gradient(closest-side, var(--bg) 62%, transparent 66% 100%), conic-gradient(var(--muted, #d0d0d0) var(--p, 0%), var(--raised, #3a3a3a) 0); } .nui-pod-queued { font-size: 18px !important; } /* swiping a row: it moves, what the swipe does shows underneath */ .nui-pod-list { position: relative; } .nui-pod-list > .nui-pod-row { touch-action: pan-y; } .nui-pod-row.nui-pod-swiping { position: relative; z-index: 1; will-change: transform; } .nui-pod-swipebg { position: absolute; left: 0; right: 0; z-index: 0; display: flex; align-items: center; justify-content: space-between; padding: 0 14px; background: var(--hover, #161616); color: var(--nui-muted); font-size: 14px; white-space: nowrap; pointer-events: none; } .nui-pod-swipebg.armed { background: var(--raised, #2c2c2c); color: var(--fg, #fff); } /* Behind the row: the icon, under it the action in bold and what it means for this episode (narrow, so it shows whole by the time the swipe is armed). */ .nui-pod-swipe-l, .nui-pod-swipe-r { display: flex; flex-direction: column; align-items: flex-start; gap: 3px; min-width: 0; } .nui-pod-swipe-r { align-items: flex-end; } .nui-pod-swipe-icon { font-size: 18px; line-height: 22px; } .nui-pod-swipe-text { display: flex; flex-direction: column; line-height: 1.2; min-width: 0; font-family: var(--nui-sans); letter-spacing: normal; } .nui-pod-swipe-r .nui-pod-swipe-text { align-items: flex-end; text-align: right; } .nui-pod-swipe-text b { font-weight: 700; font-size: 13px; } .nui-pod-swipe-text small { font-size: 12px; font-weight: 400; opacity: 0.75; } #nui-pod-undo { position: fixed; left: 50%; bottom: calc(var(--nui-dock-h, 124px) + 12px + env(safe-area-inset-bottom, 0px)); transform: translateX(-50%); z-index: 950; display: flex; align-items: center; gap: 14px; max-width: calc(100% - 24px); padding: 4px 6px 4px 16px; border-radius: 8px; background: #262626; color: #fff; font-size: 14px; box-shadow: 0 4px 16px rgba(0, 0, 0, 0.5); opacity: 0; pointer-events: none; transition: opacity 0.18s; } #nui-pod-undo.nui-show { opacity: 1; pointer-events: auto; } /* Line icons (native-podcast.js svgIcon): stroke in the text's colour. */ .nui-svg { display: inline-flex; align-items: center; justify-content: center; line-height: 0; } .nui-svg svg { display: block; } .nui-row-icon .nui-svg { width: 100%; } .nui-pod-selactions .btn .nui-svg { margin-right: 6px; vertical-align: -3px; } .nui-pod-undo-icon { display: inline-flex; margin-right: -6px; } .nui-pod-undo-icon[hidden] { display: none; } .nui-pod-undo-text { font-family: var(--nui-sans); letter-spacing: normal; font-weight: 400; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .nui-pod-undo-btn { min-height: 40px; padding: 0 10px; border: none; background: none; color: #fff; font: inherit; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; cursor: pointer; } /* the top bar's search */ .nui-pod-searchbtn svg { display: block; } .nui-pod-searchbtn.on { color: var(--fg, #fff); } /* the feed page: one quiet line instead of the settings, the ⚙ sheet's parts */ .nui-pod-feedsum { display: block; width: 100%; margin: -2px 0 6px; padding: 2px 0 8px; border: none; border-bottom: 1px solid var(--border); background: none; color: var(--nui-muted); font-family: var(--nui-sans); font-size: 13px; font-weight: 400; letter-spacing: normal; line-height: 1.4; text-align: left; cursor: pointer; } .nui-pod-gear { font-size: 22px !important; } .nui-pod-sheetsep { height: 1px; margin: 6px 20px; background: var(--border); } .nui-pod-sheetnote { padding: 2px 20px 10px; white-space: normal; line-height: 1.45; font-size: 13px; } /* the player's chapters, right under the title */ .nui-pod-chapbox { margin-top: -4px; border: 1px solid var(--border); border-radius: 8px; padding: 2px 4px 2px 10px; } .nui-pod-chapbox[hidden] { display: none; } /* the Podcast-Radio (diora-web docs/podcasts.md): what comes next, + and "Normal weiterhören" */ .nui-pod-radiobox { margin-top: -4px; border: 1px solid var(--border); border-radius: 8px; padding: 6px 8px 6px 10px; } .nui-pod-radiobox[hidden] { display: none; } .nui-pod-radionext { font-size: 12px; color: var(--nui-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .nui-pod-radionext:empty { display: none; } .nui-pod-radioacts { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 4px; } .nui-pod-radioacts .nui-icon { width: auto !important; padding: 0 12px !important; font-size: 13px !important; border: 1px solid var(--border); border-radius: 16px; } body.eink .nui-pod-radiobox, body.eink .nui-pod-radioacts .nui-icon { border-color: #000; } .nui-pod-chaphead { display: flex; align-items: center; gap: 2px; min-height: 40px; } .nui-pod-chapcount { flex: 1; min-width: 0; font-size: 12px; color: var(--nui-muted); font-variant-numeric: tabular-nums; } .nui-pod-chapbtn { min-width: 40px !important; min-height: 40px !important; font-size: 16px !important; } .nui-pod-chaplist { position: relative; max-height: 168px; overflow-y: auto; margin: 0 -4px 4px -10px; padding: 0 4px 0 10px; border-top: 1px solid var(--border); } .nui-pod-chaplist .nui-pod-chapter { padding: 8px 4px; } .nui-pod-chaplist .nui-pod-chapter:last-child { border-bottom: none; } .nui-pod-withchapters .nui-pod-art-player { width: min(46vw, 220px); height: min(46vw, 220px); } /* the downloads overview: the finished ones as a list */ .nui-pod-dls-donerow { display: flex; align-items: center; justify-content: space-between; gap: 8px; } .nui-pod-dls-show { min-height: 36px; padding: 0 12px; font-size: 14px !important; } body.eink .nui-pod-count-queue { background: #000; color: #fff; } body.eink .nui-pod-tab.active .nui-pod-count { background: #000; color: #fff; } body.eink .nui-pod-playbtn { color: #000; } body.eink .nui-pod-dlmark { border-color: #000; color: #000; } body.eink .nui-pod-dlmark-done { background: #000; color: #fff; } body.eink .nui-pod-dlmark-queued, body.eink .nui-pod-dlmark-downloading { background: radial-gradient(closest-side, #fff 62%, transparent 66% 100%), conic-gradient(#000 var(--p, 0%), #ccc 0); } body.eink .nui-pod-swipebg { background: #eee; color: #444; } body.eink .nui-pod-swipebg.armed { background: #000; color: #fff; } body.eink #nui-pod-undo { background: #000; box-shadow: none; } body.eink .nui-pod-initial { color: #555; } body.eink .nui-pod-feedsum { color: #444; border-bottom-color: #000; } body.eink .nui-pod-chapbox { border-color: #000; } body.eink .nui-pod-chip.on { border-color: #000; color: #000; } body.eink .nui-pod-notes a, body.eink .nui-pod-facts a { text-decoration-color: #000; } /* A prompt (customPrompt: an own sleep time, an own speed) opened from the player or a sheet comes above both (app.css has it at 500/501, under them). */ .modal-overlay { z-index: 990; } .modal-dialog { z-index: 991; } /* Ambient's sleep timer: a ☾ on the synthesizer's frame, top right (native-podcast.js). */ #tab-ambient { position: relative; } #nui-amb-sleep { position: absolute; top: 10px; right: 10px; z-index: 2; min-width: 44px; height: 36px; padding: 0 12px; border-radius: 18px; border: 1px solid rgba(255, 255, 255, 0.18); background: rgba(0, 0, 0, 0.55); color: #ddd; } .nui-section-bar #nui-amb-sleep { position: static; background: none; border-color: transparent; color: inherit; } .nui-section-bar #nui-amb-sleep.on { border-color: var(--accent); }