html,body,#root{height:100%}body{margin:0}:root{--bg:#0f1115;--panel:#1a1d24;--panel2:#14171d;--border:#2a2f3a;--text:#e6e8ec;--muted:#9aa4b2;--accent:#4f8cff;--accent-hover:#3a76e8;--ok-bg:#13351f;--ok-fg:#6ee7a0;--warn-bg:#3a2f12;--warn-fg:#f0c674}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.layout{grid-template-columns:360px 1fr;height:100vh;display:grid}.sidebar{border-right:1px solid var(--border);background:var(--panel2);flex-direction:column;min-height:0;display:flex}.sidebar header{padding:1rem 1rem .5rem}.sidebar h1{margin:0;font-size:1.25rem}.sidebar .sub{color:var(--muted);margin:.15rem 0 0;font-size:.85rem}.controls{border-bottom:1px solid var(--border);flex-direction:column;gap:.5rem;padding:.5rem 1rem .75rem;display:flex}.controls input[type=text],.controls input:not([type]){width:100%}.check{color:var(--muted);align-items:center;gap:.4rem;font-size:.82rem;display:flex}.check input{width:auto}input{border:1px solid var(--border);color:var(--text);background:#0d0f13;border-radius:6px;padding:.5rem .6rem;font-size:.9rem}input:focus{border-color:var(--accent);outline:none}button{color:var(--text);border:1px solid var(--border);cursor:pointer;background:#262b35;border-radius:6px;padding:.45rem .8rem;font-size:.85rem}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.45;cursor:not-allowed}button.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}button.primary:hover:not(:disabled){background:var(--accent-hover)}button.scan{background:#223}.church-list{flex:1;min-height:0;margin:0;padding:0;list-style:none;overflow-y:auto}.church-list li{border-bottom:1px solid var(--border);cursor:pointer;padding:.6rem 1rem;position:relative}.church-list li:hover{background:#1e222b}.church-list li.active{border-left:3px solid var(--accent);background:#1b2740}.c-name{padding-right:5.5rem;font-size:.92rem;font-weight:600}.c-meta{color:var(--muted);margin-top:.1rem;padding-right:5.5rem;font-size:.78rem}.badge{white-space:nowrap;border-radius:10px;padding:.1rem .4rem;font-size:.68rem;position:absolute;top:.6rem;right:.7rem}.badge.ok{background:var(--ok-bg);color:var(--ok-fg)}.badge.warn{background:var(--warn-bg);color:var(--warn-fg)}.badge.muted{color:var(--muted);background:#23262e}.content{min-height:0;padding:1.25rem 1.5rem 3rem;overflow-y:auto}.empty{text-align:center;max-width:520px;color:var(--muted);margin:4rem auto}.empty h2{color:var(--text)}.church-head h2{margin:0}.sub{color:var(--muted);margin:.25rem 0;font-size:.88rem}.sub a,.feed-line a{color:var(--accent)}.feed-line{color:var(--muted);word-break:break-all;font-size:.8rem}code{background:#ffffff14;border-radius:4px;padding:.05rem .3rem}.ep-actions{color:var(--muted);justify-content:space-between;align-items:center;margin:1rem 0 .5rem;font-size:.85rem;display:flex}.ep-actions .right{gap:.5rem;display:flex}.episodes{margin:0;padding:0;list-style:none}.episodes li{border:1px solid var(--border);background:var(--panel);border-radius:8px;gap:.7rem;margin-bottom:.5rem;padding:.7rem;display:flex}.episodes li.sel{border-color:var(--accent)}.episodes li>input{width:auto;margin-top:.2rem}.ep-body{flex:1;min-width:0}.ep-title{font-weight:600}.ep-meta{color:var(--muted);margin:.1rem 0;font-size:.78rem}.ep-desc{color:var(--muted);margin:.3rem 0;font-size:.82rem}.ep-body audio{width:100%;height:32px;margin-top:.35rem}.download-bar{background:var(--panel);border:1px solid var(--border);border-radius:10px;align-items:flex-end;gap:.75rem;margin-top:1rem;padding:.85rem 1rem;display:flex;position:sticky;bottom:0}.download-bar label{color:var(--muted);flex-direction:column;flex:1;gap:.3rem;font-size:.8rem;display:flex}.progress{background:#0d0f13;border-radius:5px;height:10px;overflow:hidden}.progress.thin{height:6px}.progress .bar{background:var(--accent);height:100%;transition:width .3s}.job{background:var(--panel);border:1px solid var(--border);border-radius:10px;margin-top:1.25rem;padding:1rem}.job.done{border-color:#2e6b3e}.job.done .bar{background:#3ea25b}.job.error{border-color:#7a2434}.job h3{margin:0 0 .5rem}.stats{color:var(--muted);margin:.5rem 0;font-size:.85rem}.feed-url code{word-break:break-all}.note{color:var(--muted);padding:.5rem 1rem;font-size:.88rem}.note.err{color:#ff8a9a}details pre{border:1px solid var(--border);white-space:pre-wrap;background:#0d0f13;border-radius:6px;max-height:240px;padding:.6rem;font-size:.78rem;overflow:auto}
