/* Shared feedback and confirmation primitives, independent of pages. */
.notification-region{position:fixed;z-index:60;top:calc(12px + env(safe-area-inset-top));left:50%;transform:translateX(-50%);width:min(480px,calc(100vw - 24px));display:grid;gap:8px;pointer-events:none}
.notification{display:flex;align-items:center;gap:8px;padding:4px 4px 4px 14px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text);box-shadow:0 3px 14px #0002;pointer-events:auto;overflow-wrap:anywhere}
.notification>span{flex:1;min-width:0;font-size:14px}.notification[data-kind=error]{border-color:var(--error)}
.notification button{border:0;background:transparent;flex:none}.notification-close{width:44px;padding:0;font-size:22px;color:var(--muted)}.notification-action{font-size:14px;color:var(--focus)}
.confirm-dialog{width:min(420px,calc(100vw - 32px));max-height:calc(100dvh - 48px);overflow:auto;padding:24px;border:1px solid var(--border);border-radius:8px;background:var(--page);color:var(--text)}
.confirm-dialog::backdrop{background:#0006}.confirm-dialog h2{font-size:19px;line-height:1.4;margin:0 0 12px}.confirm-dialog p{font-size:15px;margin:0 0 20px;overflow-wrap:anywhere}.confirm-dialog .dialog-actions{display:flex;justify-content:flex-end;gap:8px}
.dialog-error{color:var(--error)}.danger-button{background:var(--error);border-color:var(--error);color:var(--page);font-weight:600}.danger-button:hover{background:var(--error);filter:brightness(1.08)}
.primary-button{background:var(--focus);border-color:var(--focus);color:var(--page)}.is-loading::before{content:'';display:inline-block;width:12px;height:12px;margin-right:8px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:button-spin .7s linear infinite}@keyframes button-spin{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.is-loading::before{animation:none}}

.notification-action{border:0!important;background:transparent!important;padding:0 4px!important;text-decoration:underline;text-underline-offset:3px;font-weight:600;white-space:nowrap}

/* Reusable single-dialog page stack, with a content slot and optional back action. */
.dialog-pages-heading{display:flex;align-items:center;gap:8px;margin-bottom:16px}
.dialog-pages-heading h2{flex:1;min-width:0;margin:0;font-size:18px;line-height:26px}
.dialog-pages-control{display:grid;place-items:center;width:34px;height:34px;min-height:34px;flex:none;padding:7px;border:0;background:transparent;color:var(--muted)}
.dialog-pages-control svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.dialog-pages-body{min-width:0}

/* Plain text-menu row: full target, horizontal separators, no press flourish. */
.text-menu-row{display:flex;align-items:center;justify-content:flex-start;width:100%;min-height:48px;padding:12px;border:0;border-block:1px solid var(--separator);border-radius:0;background:transparent;color:var(--text);font-size:14px;font-weight:500;line-height:22px;text-align:left;box-shadow:none;transform:none;filter:none}
.text-menu-row:hover,.text-menu-row:active{background:transparent;box-shadow:none;transform:none;filter:none}
@media(hover:hover){.text-menu-row:hover,.text-menu-row:hover:active{background:var(--hover)}}
