:root{--bg:#f4f6f9;--surface:#fff;--text:#1b2430;--muted:#5b6675;--border:#d6dce4;--primary:#1f4e79;--primary-text:#fff;--danger:#b42318;--ok-bg:#e7f6ec;--ok-text:#14532d;--warn-bg:#fff4d6;--warn-text:#6b4a00;--error-bg:#fde8e7;--error-text:#7a1a12;--info-bg:#e8f0fb;--info-text:#17375e;--ringing:#f59e0b;--selected:#dbe8f7;--attention:#b45309;--attention-text:#fff;--radius:12px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;font-family:Segoe UI,system-ui,-apple-system,Roboto,sans-serif;font-size:16px;line-height:1.45}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#11161d;--surface:#1a212b;--text:#e6ebf1;--muted:#9aa6b4;--border:#2d3743;--primary:#4f8fd1;--primary-text:#0b1520;--danger:#f0614f;--ok-bg:#133022;--ok-text:#a6e8bf;--warn-bg:#3a2e0b;--warn-text:#f5d58a;--error-bg:#3d1714;--error-text:#f7b4ab;--info-bg:#15283f;--info-text:#b5cff0;--selected:#20354d;--attention:#f59e0b;--attention-text:#1b1300}}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0}h1{margin:.5rem 0 1rem;font-size:1.4rem}h2{margin:0;font-size:1.15rem}h3,h4{margin:1rem 0 .5rem;font-size:1rem}a{color:var(--primary)}.app{min-height:100vh}.topbar{background:var(--surface);border-bottom:1px solid var(--border);z-index:10;justify-content:space-between;align-items:center;gap:.5rem;padding:.6rem 1rem;display:flex;position:sticky;top:0}.brand{color:var(--text);align-items:center;gap:.5rem;min-width:0;font-weight:600;text-decoration:none;display:flex}.brand span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.topbar-actions{flex-shrink:0;gap:.75rem;display:flex}.tabs{background:var(--surface);border-bottom:1px solid var(--border);gap:.25rem;padding:0 1rem;display:flex;overflow-x:auto}.tab{color:var(--muted);font:inherit;cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:3px solid #0000;padding:.7rem .9rem;text-decoration:none}.tab.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:600}.content{max-width:720px;margin:0 auto;padding:1rem}.content.wide{max-width:none}@media (width>=1000px){.content.wide{padding:1.25rem 2rem}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:1rem;padding:1rem}.card.narrow{gap:.9rem;max-width:420px;margin:2rem auto;display:grid}label{gap:.3rem;font-weight:500;display:grid}input,select{font:inherit;border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:8px;min-height:44px;padding:.6rem .7rem}fieldset{border:none;gap:.4rem;margin:0;padding:0;display:grid}legend{margin-bottom:.3rem;font-weight:500}.grid{gap:.8rem;display:grid}.row{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.row.between{justify-content:space-between}.check{align-items:center;gap:.35rem;font-weight:400;display:inline-flex}.check input{width:1.2rem;height:1.2rem;min-height:auto}.checks{flex-wrap:wrap;gap:.8rem;display:flex}.button{font:inherit;cursor:pointer;border:1px solid #0000;border-radius:10px;justify-content:center;align-items:center;min-height:44px;padding:.65rem 1.1rem;font-weight:600;text-decoration:none;display:inline-flex}.button:disabled{opacity:.45;cursor:not-allowed}.button.primary{background:var(--primary);color:var(--primary-text)}.button.secondary{background:var(--surface);color:var(--primary);border-color:var(--border)}.button.danger{background:var(--danger);color:#fff}.button.big{flex:1;min-height:56px;font-size:1.1rem}.button.wide{width:100%}.link{color:var(--primary);font:inherit;cursor:pointer;background:0 0;border:none;padding:.25rem;text-decoration:underline}.link.danger{color:var(--danger)}.link:disabled{opacity:.45}.muted{color:var(--muted)}.small{font-size:.875rem}.notice{border-radius:10px;margin:.75rem 0;padding:.7rem .9rem}.notice p{margin:0 0 .5rem}.notice.ok{background:var(--ok-bg);color:var(--ok-text)}.notice.warn{background:var(--warn-bg);color:var(--warn-text)}.notice.error{background:var(--error-bg);color:var(--error-text)}.notice.info{background:var(--info-bg);color:var(--info-text)}.badge{background:var(--info-bg);color:var(--info-text);border-radius:999px;padding:.15rem .55rem;font-size:.8rem;font-weight:600;display:inline-block}.badge.online{background:var(--ok-bg);color:var(--ok-text)}.badge.offline{background:var(--error-bg);color:var(--error-text)}.badge.warn{background:var(--warn-bg);color:var(--warn-text)}.badge.attention{background:var(--attention);color:var(--attention-text)}.badge.muted{background:var(--border);color:var(--muted)}.tab-badge{margin-left:.4rem}.chips{flex-wrap:wrap;gap:.3rem;display:inline-flex}.card.attention{border:2px solid var(--attention)}.request{border-bottom:1px solid var(--border);gap:.3rem;padding:.5rem 0;display:grid}.request:last-child{border-bottom:none}.device-head{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.bells{grid-template-columns:repeat(2,1fr);gap:.6rem;margin:1rem 0;display:grid}.bell{border-radius:var(--radius);border:2px solid var(--border);background:var(--bg);min-height:84px;color:var(--text);font:inherit;cursor:pointer;place-content:center;gap:.2rem;padding:.5rem;font-weight:600;display:grid}.bell.selected{border-color:var(--primary);background:var(--selected)}.bell.ringing{border-color:var(--ringing);box-shadow:0 0 0 3px color-mix(in srgb, var(--ringing) 35%, transparent);animation:1.6s ease-in-out infinite swing}.bell:disabled{cursor:not-allowed}.bell-state{color:var(--ringing);font-size:.8rem}@keyframes swing{50%{box-shadow:0 0 0 6px color-mix(in srgb, var(--ringing) 15%, transparent)}}@media (prefers-reduced-motion:reduce){.bell.ringing{animation:none}}.presets{flex-wrap:wrap;gap:.5rem;margin-bottom:.9rem;display:flex}.chip{font:inherit;border:1px solid var(--border);background:var(--surface);min-height:40px;color:var(--text);cursor:pointer;border-radius:999px;padding:.45rem .8rem}.minutes{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.9rem;display:flex}.minutes input{text-align:center;width:4.5rem}.step{border:1px solid var(--border);background:var(--surface);width:44px;height:44px;color:var(--text);cursor:pointer;border-radius:10px;font-size:1.3rem}.actions{gap:.6rem;display:flex}.recent{margin-top:.8rem;font-size:.9rem}.recent ul{margin:.4rem 0 0;padding-left:1.1rem}.list{gap:.5rem;margin:0 0 1rem;padding:0;list-style:none;display:grid}.list.compact{gap:.25rem}.list-link{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);padding:1rem;font-weight:600;text-decoration:none;display:block}.log{margin:0 0 1rem;padding:0;list-style:none}.log li{border-bottom:1px solid var(--border);grid-template-columns:auto 1fr;gap:0 .8rem;padding:.6rem 0;display:grid}.log-time{color:var(--muted);white-space:nowrap;font-size:.85rem}.log-actor{font-weight:600}.log-text{grid-column:1/-1}.table-wrap{margin-bottom:1rem;overflow-x:auto}table{border-collapse:collapse;background:var(--surface);width:100%;font-size:.9rem}th,td{text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;vertical-align:middle;padding:.45rem .6rem}td.wrap{white-space:normal}tr.attention>td{background:var(--warn-bg)}tr.details>td{background:var(--bg);white-space:normal}.details-grid{grid-template-columns:repeat(auto-fit,minmax(16rem,1fr));align-items:start;gap:1rem;padding:.5rem 0;display:grid}.details-grid h4{margin-top:0}.facts{grid-template-columns:auto 1fr;gap:.2rem .8rem;margin:0;display:grid}.facts dt{color:var(--muted)}.facts dd{word-break:break-all;margin:0}.row.nowrap{flex-wrap:nowrap}@media (width<=799px){table.responsive{background:0 0}table.responsive thead{display:none}table.responsive,table.responsive tbody,table.responsive tr,table.responsive td{width:100%;display:block}table.responsive tr{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:.6rem;padding:.5rem .8rem}table.responsive tr.details{border-radius:0 0 var(--radius) var(--radius);border-top:none;margin-top:-.6rem}table.responsive td{white-space:normal;border:none;padding:.3rem 0}table.responsive td[data-label]{justify-content:space-between;align-items:center;gap:1rem;display:flex}table.responsive td[data-label]:before{content:attr(data-label);color:var(--muted);font-weight:500}}.toolbar{flex-wrap:wrap;gap:.6rem;margin-bottom:.8rem;display:flex}.toolbar .search{flex:16rem;max-width:28rem}.pager{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.6rem;margin-bottom:1rem;display:flex}.form-help{margin:0}@media (width>=1000px){.form-row{grid-template-columns:repeat(auto-fill,16rem);align-items:end}.form-row .button{justify-self:start;min-width:9rem}.form-row h3,.form-row .notice,.form-row .form-help{grid-column:1/-1;margin:0}}.header-select{min-height:auto;padding:.25rem .4rem;font-size:.9rem}.topbar-actions{align-items:center}.header-tabs,.church-select{display:none}@media (width>=900px){.header-tabs{background:0 0;border-bottom:none;flex:1;align-self:stretch;margin:-.6rem 0;padding:0;display:flex}.header-tabs .tab{align-items:center;display:flex}.church-select{max-width:16rem;display:inline-block}.bar-tabs{display:none}}.badge.blocked{background:var(--danger);color:#fff;align-items:center;gap:.3rem;text-decoration:none;display:inline-flex}.blocked-title{align-items:center;gap:.4rem;display:flex}.lock-icon{flex-shrink:0}.log-details{word-break:break-all;grid-column:1/-1}.button.danger-text{color:var(--danger)}code.secret{word-break:break-all;white-space:normal;font-size:.85rem}.dialog{border-radius:var(--radius);background:var(--surface);max-width:min(92vw,420px);color:var(--text);border:none;padding:1.25rem}.dialog::backdrop{background:#00000073}.dialog p{font-size:1.1rem}.dialog-actions{justify-content:flex-end;gap:.6rem;display:flex}@media (width>=600px){.bells{grid-template-columns:repeat(4,1fr)}}.bell.unknown{border-style:dashed;border-color:var(--ringing)}
