.notification-primary,.notification-secondary{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 16px;border-radius:8px;font-size:14px;font-weight:600;transition:background-color .15s,border-color .15s,box-shadow .15s;border:1px solid transparent;cursor:pointer}.notification-primary{background:#136c6a;color:white}.notification-primary:hover{background:#135657}.notification-secondary{border-color:#cbd5e1;background:white;color:#334155}.notification-secondary:hover{background:#f8fafc}.notification-primary:disabled,.notification-secondary:disabled{opacity:.5;cursor:not-allowed}.notification-primary:focus-visible,.notification-secondary:focus-visible{outline:2px solid #138784;outline-offset:3px}
.notification-choice{position:relative;display:flex;cursor:pointer;min-height:44px;align-items:center;justify-content:center;text-align:center;font-size:14px;line-height:1.4;color:#475569}.notification-choice input{position:absolute;opacity:0;width:1px;height:1px}.notification-choice span{display:flex;align-items:center;justify-content:center;min-height:44px;width:100%;padding:8px 5px;border:1px solid transparent;border-radius:6px}.notification-choice input:checked+span{background:white;color:#135657;border-color:#74dad5;font-weight:600}.notification-choice input:focus-visible+span{outline:2px solid #138784;outline-offset:2px}.notification-choice:hover span{background:#eefcfb}.notification-minute{min-width:55px}.notification-minute span{border-color:#e2e8f0}.notification-time{min-height:44px;border:1px solid #cbd5e1;border-radius:8px;padding:8px;margin-left:6px;background:white;color:#0f172a}
#pwa-update-card{position:fixed;right:16px;bottom:calc(6rem + env(safe-area-inset-bottom,0px));z-index:45;width:min(390px,calc(100vw - 32px));padding:20px;border:1px solid #cbd5e1;border-radius:12px;background:white;box-shadow:0 4px 16px #0f172a14}@media(min-width:1024px){#pwa-update-card{bottom:24px}}[hidden]{display:none!important}@media(prefers-reduced-motion:reduce){.notification-primary,.notification-secondary{transition:none}}
.notification-explainer{display:grid;gap:16px;background:#f8fafc;border-radius:8px;padding:16px;font-size:14px;line-height:1.6;color:#475569}.notification-explainer dt{font-weight:600;color:#0f172a;margin-bottom:4px}.notification-save-row{display:flex;flex-wrap:wrap;align-items:center;gap:12px;border-top:1px solid #e2e8f0;padding-top:20px}@media(min-width:640px){.notification-explainer{grid-template-columns:1fr 1fr;gap:24px}}@media(max-width:639px){.notification-save-row .notification-primary{width:100%}}.notification-channels{display:grid;grid-template-columns:1fr 1fr;gap:8px}.notification-channel{display:flex;align-items:center;gap:10px;min-height:48px;padding:12px;border:1px solid #e2e8f0;border-radius:8px;font-size:14px;line-height:1.4;color:#475569;cursor:pointer}.notification-channel input{width:18px;height:18px;flex-shrink:0;accent-color:#136c6a}.notification-channel:has(input:checked){border-color:#74dad5;background:#eefcfb;color:#135657}.notification-channel:has(input:focus-visible){outline:2px solid #138784;outline-offset:2px}.notification-channel:hover{background:#f8fafc}
#notification-preferences[data-dirty="true"] .notification-save-row{position:sticky;bottom:calc(5.5rem + env(safe-area-inset-bottom,0px));z-index:20;margin-inline:-8px;padding:12px;border:1px solid #cbd5e1;border-radius:12px;background:rgba(255,255,255,.96);box-shadow:0 10px 30px rgba(15,23,42,.14);backdrop-filter:blur(8px)}@media(min-width:1024px){#notification-preferences[data-dirty="true"] .notification-save-row{bottom:16px}}
.release-dialog{width:min(460px,calc(100vw - 32px));max-width:none;margin:auto;padding:0;border:0;border-radius:20px;background:#fff;color:#0f172a;box-shadow:0 24px 64px rgba(15,23,42,.22);overflow:auto;max-height:calc(100dvh - 32px)}.release-dialog::backdrop{background:rgba(15,23,42,.5);backdrop-filter:blur(2px)}html:has(.release-dialog[open]){overflow:hidden}@keyframes releaseEnter{from{opacity:0;transform:translateY(12px)}}.release-dialog[open]{animation:releaseEnter .2s cubic-bezier(.2,.8,.2,1)}@media(max-width:639px){.release-dialog{width:100%;margin:auto 0 0;border-radius:20px 20px 0 0;max-height:calc(100dvh - 24px);padding-bottom:env(safe-area-inset-bottom,0px)}}@media(prefers-reduced-motion:reduce){.release-dialog[open]{animation:none}}

.notification-matrix-head,.notification-matrix-row{display:grid;grid-template-columns:minmax(0,1fr) 64px 76px;column-gap:4px;align-items:center}.notification-matrix-head{padding:8px 16px;background:#f8fafc;border-top:1px solid #f1f5f9;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:#64748b;text-align:center}.notification-matrix-row{border:0;margin:0;padding:0;min-width:0}.notification-cell{display:flex;align-items:center;justify-content:center;min-height:44px;min-width:44px;border-radius:8px;cursor:pointer}.notification-cell:hover{background:#f8fafc}.notification-cell input{width:22px;height:22px;accent-color:#136c6a;cursor:pointer}.notification-cell:has(input:focus-visible){outline:2px solid #138784;outline-offset:1px}@media(min-width:640px){.notification-matrix-head,.notification-matrix-row{grid-template-columns:minmax(0,1fr) 110px 110px;column-gap:12px}.notification-matrix-head{padding:10px 24px;font-size:12px}}@media(max-width:639px){.notification-minute{min-width:0}}
/* Cabeçalho das colunas preso ao rolar: numa lista longa a pessoa perdia qual coluna era o sino e qual o aparelho. `top` desconta a barra do topo do celular (h-16); a seção usa overflow-clip, porque overflow-hidden prenderia o sticky dentro dela. */
.notification-matrix-head{position:sticky;top:4rem;z-index:10;border-bottom:1px solid #e2e8f0}@media(min-width:1024px){.notification-matrix-head{top:0}}
