/* NOTIFICATIONS — iOS Notification Center feel (2026-11-08, Hal approved; feat/speedy-notifs-apple-1108)
   Shared tokens: /css/wf-apple.css. Scoped to html.ap-ui (set by notif-center.js and wf-speedy.js).
   Phone: a spring bottom sheet (grabber, safe areas). Desktop: a refined popover under the bell.
   Large title that collapses on scroll · ONE scrollable filter row · search + Unread|All · grouped stacks · swipe actions with
   button fallbacks (desktop "•••", keyboard) · compact times · a clear unread dot. Logic: notif-center.js (ap branch). */

/* ── shell ── */
html.ap-ui .modal-overlay.nc-overlay.ncv2 { background: var(--ap-scrim); -webkit-backdrop-filter: none; backdrop-filter: none; align-items: flex-start; justify-content: flex-end; }
html.ap-ui .modal-overlay.nc-overlay.ncv2.open { animation: ap-fade var(--ap-d) ease both; }
html.ap-ui .modal-overlay.nc-overlay.ncv2.ncs-closing { animation: ncs-fade-out 220ms ease both; }
@keyframes ncs-fade-out { to { opacity: 0; } }
html.ap-ui .modal-overlay.nc-overlay.ncv2 .nc-panel {
  position: relative; width: 420px; height: min(780px, calc(100vh - 84px)); margin: 64px 16px 0 0; border: 0; border-radius: var(--ap-r-lg);
  background: var(--ap-mat-thick); -webkit-backdrop-filter: var(--ap-blur-strong); backdrop-filter: var(--ap-blur-strong);
  box-shadow: var(--ap-sh-3); color: var(--ap-ink); transform-origin: calc(100% - 40px) 0; opacity: 1; transform: none; transition: none;
}
html.ap-ui .modal-overlay.nc-overlay.ncv2.open .nc-panel { animation: ncs-pop var(--ap-d-slow) var(--ap-spring) both; }
html.ap-ui .modal-overlay.nc-overlay.ncv2.ncs-closing .nc-panel { animation: ncs-pop-out 200ms var(--ap-ease-in) both; }
@keyframes ncs-pop { from { opacity: 0; transform: translateY(-8px) scale(.92); } to { opacity: 1; transform: none; } }
@keyframes ncs-pop-out { to { opacity: 0; transform: translateY(-6px) scale(.95); } }

/* ── compact bar: title fades in once the large title has scrolled away; quiet round tools ── */
html.ap-ui .ncv2 .nc-head { order: 0; position: relative; z-index: 3; gap: 6px; min-height: 52px; padding: 8px 10px 8px 16px; border: 0; background: transparent; box-shadow: none; transition: box-shadow var(--ap-d) ease, background var(--ap-d) ease; }
html.ap-ui .ncv2 .ncv-head-mark, html.ap-ui .ncv2 .nc-head .nc-count { display: none; }
html.ap-ui .ncv2 .nc-head-l { flex: 1 1 auto; justify-content: center; }
html.ap-ui .ncv2 .nc-head .nc-title { font: var(--ap-t-head); color: var(--ap-ink); opacity: 0; transform: translateY(4px); transition: opacity var(--ap-d-fast) ease, transform var(--ap-d) var(--ap-spring); }
html.ap-ui .ncv2 .nc-panel.ncs-scrolled .nc-head { background: var(--ap-mat); box-shadow: 0 .5px 0 var(--ap-hair); }
html.ap-ui .ncv2 .nc-panel.ncs-scrolled .nc-head .nc-title, html.ap-ui .ncv2 .nc-panel.ncs-prefs .nc-head .nc-title { opacity: 1; transform: none; }
html.ap-ui .ncv2 .nc-iconbtn, html.ap-ui .ncv2 .ncv-markall { position: relative; width: 32px; height: 32px; min-width: 32px; padding: 0; border: 0; border-radius: 50%; background: var(--ap-fill); color: var(--ap-ink-2); display: inline-flex; align-items: center; justify-content: center; cursor: pointer; }
html.ap-ui .ncv2 .nc-iconbtn:hover, html.ap-ui .ncv2 .ncv-markall:hover:not([disabled]) { background: var(--ap-fill-2); color: var(--ap-ink); border: 0; }
html.ap-ui .ncv2 .nc-iconbtn svg, html.ap-ui .ncv2 .ncv-markall svg { display: block; width: 16px; height: 16px; }
html.ap-ui .ncv2 .ncv-markall .ncv-ma-t { display: none; }
html.ap-ui .ncv2 .ncv-markall[disabled] { opacity: .4; }
html.ap-ui .ncv2 #nc-markall { order: -1; } /* left side, like "Edit" on iOS; settings + close on the right */
html.ap-ui .ncv2 .nc-head-l { order: 0; }
html.ap-ui .ncv2 #nc-gear { order: 1; } html.ap-ui .ncv2 .nc-head > .nc-iconbtn:last-child { order: 2; }

/* ── large title (collapses on scroll) ── */
html.ap-ui .ncv2 .ncs-large { order: 1; display: flex; align-items: baseline; gap: 10px; padding: 0 20px; max-height: 52px; overflow: hidden; flex: 0 0 auto;
  transition: max-height var(--ap-d) var(--ap-spring), opacity var(--ap-d-fast) ease, padding var(--ap-d) var(--ap-spring); }
html.ap-ui .ncv2 .ncs-large h2 { margin: 0; font: var(--ap-t-large); letter-spacing: -.02em; color: var(--ap-ink); }
html.ap-ui .ncv2 .ncs-large .ncs-need { font: var(--ap-t-foot); font-weight: 600; color: var(--ap-blue-text); }
html.ap-ui .ncv2 .nc-panel.ncs-scrolled .ncs-large { max-height: 0; opacity: 0; }
html.ap-ui .ncv2 .nc-panel.ncs-prefs .ncs-large, html.ap-ui .ncv2 .nc-panel.ncs-prefs .nc-subbar, html.ap-ui .ncv2 .nc-panel.ncs-prefs .nc-chips { display: none !important; }
html.ap-ui .ncv2 #nc-inprogress { order: 2; }

/* ── search + Unread|All ── */
html.ap-ui .ncv2 .ncv-bar { order: 3; gap: 8px; padding: 10px 16px 6px; border: 0; }
html.ap-ui .ncv2 .ncv-search { height: 38px; padding: 0 12px; border: 0; border-radius: 12px; background: var(--ap-fill); color: var(--ap-ink-3); }
html.ap-ui .ncv2 .ncv-search:focus-within { box-shadow: 0 0 0 3px color-mix(in srgb, var(--ap-blue) 22%, transparent); border: 0; }
html.ap-ui .ncv2 .ncv-search input, html.ap-ui .ncv2 .ncv-search input:focus { color: var(--ap-ink); font: var(--ap-t-body); }
html.ap-ui .ncv2 .ncv-search input::placeholder { color: var(--ap-ink-3); }
html.ap-ui .ncv2 .ncv-bar .nc-seg { display: inline-flex; gap: 2px; padding: 3px; height: 38px; border: 0; border-radius: 12px; background: var(--ap-fill); }
html.ap-ui .ncv2 .ncv-bar .nc-seg-btn { min-height: 32px; height: 32px; padding: 0 11px; border: 0; border-radius: 9px; background: transparent; color: var(--ap-ink-2); font: var(--ap-t-callout); font-size: 13px; }
html.ap-ui .ncv2 .ncv-bar .nc-seg-btn.active { background: var(--ap-card); color: var(--ap-ink); font-weight: 600; box-shadow: var(--ap-sh-1); }
html[data-remodel-mode="night"].ap-ui .ncv2 .ncv-bar .nc-seg-btn.active { background: #2a3440; }

/* ── ONE scrollable filter row (never 2 rows of pills) ── */
html.ap-ui .ncv2 .nc-chips.ncv-tabs { order: 4; flex-wrap: nowrap; gap: 6px; padding: 6px 16px 10px; overflow-x: auto; scrollbar-width: none; scroll-snap-type: x proximity; scroll-padding: 0 16px;
  -webkit-mask: linear-gradient(90deg, #000 calc(100% - 28px), transparent); mask: linear-gradient(90deg, #000 calc(100% - 28px), transparent); flex: 0 0 auto; }
html.ap-ui .ncv2 .nc-chips.ncv-tabs::-webkit-scrollbar { display: none; }
html.ap-ui .ncv2 .nc-chip.ncv-tab { scroll-snap-align: start; height: 34px; padding: 0 14px; border: 0; border-radius: 999px; background: var(--ap-fill); color: var(--ap-ink-2); font: var(--ap-t-callout); font-size: 13.5px;
  transition: background var(--ap-d) var(--ap-spring), color var(--ap-d-fast) ease, transform var(--ap-d) var(--ap-spring); }
html.ap-ui .ncv2 .nc-chip.ncv-tab:active { transform: scale(.95); }
html.ap-ui .ncv2 .nc-chip.ncv-tab.active, html.ap-ui .ncv2 .nc-chip.ncv-tab[data-k="quickbooks"].active { background: var(--ap-ink); color: var(--ap-card); font-weight: 600; }
html.ap-ui .ncv2 .nc-chip-n { min-width: 18px; height: 18px; padding: 0 5px; background: var(--ap-blue); color: #fff; font: var(--ap-t-cap); font-size: 10.5px; }
html.ap-ui .ncv2 .nc-chip.ncv-tab.active .nc-chip-n { background: var(--ap-blue); color: #fff; }

/* ── list ── */
html.ap-ui .ncv2 .ncv-list { order: 5; padding: 0 12px calc(24px + var(--ap-safe-b)); flex: 1 1 auto; min-height: 0; overflow-y: auto; overscroll-behavior: contain; }
html.ap-ui .ncv2 .ncv-day { position: static; margin: 0; padding: 18px 8px 8px; background: transparent; font: var(--ap-t-head); font-size: 15px; letter-spacing: 0; text-transform: none; color: var(--ap-ink); }
html.ap-ui .ncv2 .ncs-day-first { padding-top: 6px; }

/* a stack: one card in front, up to two layered behind; tap to fan out */
html.ap-ui .ncv2 .ncs-stack { position: relative; margin-bottom: 10px; }
html.ap-ui .ncv2 .ncs-stack-head { display: flex; align-items: center; justify-content: space-between; min-height: 30px; padding: 0 4px 6px 8px; }
html.ap-ui .ncv2 .ncs-stack-t { font: var(--ap-t-foot); font-weight: 600; color: var(--ap-ink-2); }
html.ap-ui .ncv2 .ncs-stack-btn { min-height: 28px; padding: 0 12px; border: 0; border-radius: 999px; background: var(--ap-fill); color: var(--ap-ink-2); font: var(--ap-t-foot); font-weight: 600; cursor: pointer; }
html.ap-ui .ncv2 .ncs-stack.is-collapsed { padding-bottom: 14px; cursor: pointer; }
html.ap-ui .ncv2 .ncs-stack.is-collapsed .ncs-stack-head { display: none; }
html.ap-ui .ncv2 .ncs-ghost { position: absolute; left: 0; right: 0; height: 40px; border-radius: 18px; background: var(--ap-card); box-shadow: var(--ap-sh-1); pointer-events: none; }
html.ap-ui .ncv2 .ncs-ghost.g1 { bottom: 6px; left: 10px; right: 10px; opacity: .85; z-index: 0; }
html.ap-ui .ncv2 .ncs-ghost.g2 { bottom: 0; left: 22px; right: 22px; opacity: .6; z-index: -1; }
html.ap-ui .ncv2 .ncs-stack.is-collapsed .ncs-more-n { position: absolute; right: 14px; bottom: 21px; z-index: 2; font: var(--ap-t-cap); color: var(--ap-ink-3); }
html.ap-ui .ncv2 .ncs-stack.is-open .ncs-cell { animation: ncs-fan var(--ap-d-slow) var(--ap-spring) both; }
html.ap-ui .ncv2 .ncs-stack.is-open .ncs-cell:nth-child(3) { animation-delay: 30ms; } html.ap-ui .ncv2 .ncs-stack.is-open .ncs-cell:nth-child(4) { animation-delay: 60ms; } html.ap-ui .ncv2 .ncs-stack.is-open .ncs-cell:nth-child(n+5) { animation-delay: 90ms; }
@keyframes ncs-fan { from { opacity: 0; transform: translateY(-16px) scale(.96); } to { opacity: 1; transform: none; } }

/* a cell: the row slides over its actions (swipe), or the actions show via "•••" / keyboard */
html.ap-ui .ncv2 .ncs-cell { position: relative; z-index: 1; border-radius: 18px; overflow: hidden; background: var(--ap-fill); }
html.ap-ui .ncv2 .ncs-cell + .ncs-cell { margin-top: 8px; }
html.ap-ui .ncv2 .ncs-acts { position: absolute; top: 0; right: 0; bottom: 0; display: flex; align-items: stretch; gap: 0; padding: 0; }
html.ap-ui .ncv2 .ncs-act { width: 74px; border: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; color: #fff; font: var(--ap-t-cap); font-size: 11.5px; cursor: pointer; }
html.ap-ui .ncv2 .ncs-act svg { width: 19px; height: 19px; }
html.ap-ui .ncv2 .ncs-act[data-act="read"] { background: var(--ap-blue); }
html.ap-ui .ncv2 .ncs-act[data-act="snooze"] { background: #7a5bc4; }
html.ap-ui .ncv2 .ncs-act[data-act="open"] { background: #5d6875; }
html.ap-ui .ncv2 .ncs-act[disabled] { filter: grayscale(.6); opacity: .7; }
html.ap-ui .ncv2 .ncs-cell .ncv-row { position: relative; z-index: 1; margin: 0; padding: 14px 44px 14px 14px; gap: 12px; border: 0; border-radius: 18px; background: var(--ap-card); box-shadow: var(--ap-sh-1);
  touch-action: pan-y; transition: transform var(--ap-d-slow) var(--ap-spring), background var(--ap-d-fast) ease; will-change: transform; }
html.ap-ui .ncv2 .ncs-cell .ncv-row:hover { background: var(--ap-card); }
html.ap-ui .ncv2 .ncs-cell.is-dragging .ncv-row { transition: none; }
html.ap-ui .ncv2 .ncs-cell.is-open .ncv-row { transform: translateX(-222px); }
html.ap-ui .ncv2 .ncs-cell .ncv-row[data-unread="1"], html.ap-ui .ncv2 .ncs-cell .ncv-row[data-unread="1"][data-topic="quickbooks"] { background: var(--ap-card); }
html.ap-ui .ncv2 .ncs-cell .ncv-row[data-unread="1"][data-failure="1"] { background: color-mix(in srgb, var(--ap-red) 7%, var(--ap-card)); }
html.ap-ui .ncv2 .ncs-cell .ncv-row:active { transform: scale(.985); }
html.ap-ui .ncv2 .ncs-cell.is-open .ncv-row:active { transform: translateX(-222px); }
html.ap-ui .ncv2 .ncv-ico { width: 38px; height: 38px; min-width: 38px; max-width: 38px; min-height: 38px; max-height: 38px; flex: 0 0 38px; border: 0; border-radius: 10px; }
html.ap-ui .ncv2 .ncv-main { gap: 2px; }
html.ap-ui .ncv2 .ncv-line { align-items: baseline; gap: 8px; }
html.ap-ui .ncv2 .ncv-title { font: var(--ap-t-head); font-size: 15px; line-height: 20px; color: var(--ap-ink); }
html.ap-ui .ncv2 .ncv-row[data-unread="0"] .ncv-title { font-weight: 500; }
html.ap-ui .ncv2 .ncv-time { margin-left: auto; font: var(--ap-t-foot); font-size: 12.5px; color: var(--ap-ink-3); white-space: nowrap; font-variant-numeric: tabular-nums; }
html.ap-ui .ncv2 .ncv-body { font: var(--ap-t-foot); font-size: 14px; line-height: 19px; color: var(--ap-ink-2); }
html.ap-ui .ncv2 .ncv-pip { display: none !important; }
html.ap-ui .ncv2 .ncv-go { position: absolute; right: 12px; top: 50%; margin-top: -9px; color: var(--ap-ink-3); }
html.ap-ui .ncv2 .ncv-go svg { width: 16px; height: 16px; }
html.ap-ui .ncv2 .ncs-dot { position: absolute; left: 5px; top: 50%; margin-top: -4px; width: 8px; height: 8px; border-radius: 50%; background: var(--ap-blue); }
html.ap-ui .ncv2 .ncv-row[data-unread="1"] { padding-left: 18px; }
html.ap-ui .ncv2 .ncv-row[data-unread="1"][data-failure="1"] .ncs-dot { background: var(--ap-red); }
html.ap-ui .ncv2 .ncv-acts { gap: 8px; margin-top: 8px; }
html.ap-ui .ncv2 .ncv-btn { min-height: 32px; padding: 0 14px; border: 0; border-radius: 999px; background: var(--ap-fill); color: var(--ap-ink); font: var(--ap-t-foot); font-weight: 600; }
html.ap-ui .ncv2 .ncv-btn:hover { background: var(--ap-fill-2); }
html.ap-ui .ncv2 .ncv-children { margin: 6px 0 0; padding: 4px 0; border-radius: 14px; background: var(--ap-card); box-shadow: var(--ap-sh-1); }
html.ap-ui .ncv2 .ncv-child { border: 0; padding: 10px 14px; }
html.ap-ui .ncv2 .ncv-child + .ncv-child { box-shadow: inset 0 .5px 0 var(--ap-hair); border-radius: 0; }
/* button fallback for mouse + keyboard: "•••" shows the same actions the swipe reveals */
html.ap-ui .ncv2 .ncs-morebtn { position: absolute; z-index: 2; right: 6px; top: 6px; width: 30px; height: 30px; padding: 0; border: 0; border-radius: 50%; background: var(--ap-fill); color: var(--ap-ink-2);
  display: inline-flex; align-items: center; justify-content: center; opacity: 0; cursor: pointer; transition: opacity var(--ap-d-fast) ease; }
html.ap-ui .ncv2 .ncs-cell:hover .ncs-morebtn, html.ap-ui .ncv2 .ncs-morebtn:focus-visible, html.ap-ui .ncv2 .ncs-cell.is-open .ncs-morebtn { opacity: 1; }
html.ap-ui .ncv2 .ncs-cell.is-open .ncs-morebtn { right: 228px; }
html.ap-ui .ncv2 .ncs-morebtn svg { width: 16px; height: 16px; }
html.ap-ui .ncv2 .ncs-cell:hover .ncv-go { opacity: 0; }
@media (hover: none) { html.ap-ui .ncv2 .ncs-morebtn { opacity: 0; pointer-events: none; } html.ap-ui .ncv2 .ncs-morebtn:focus-visible { opacity: 1; pointer-events: auto; } }

html.ap-ui .ncv2 .ncv-empty { padding: 56px 24px; }
html.ap-ui .ncv2 .ncv-foot { padding: 18px 8px 0; font: var(--ap-t-foot); font-size: 12px; color: var(--ap-ink-3); text-align: center; }

/* ── phone: a spring bottom sheet with a grabber, safe areas, 44pt targets ── */
@media (max-width: 768px) {
  html.ap-ui .modal-overlay.nc-overlay.ncv2 { align-items: flex-end; }
  html.ap-ui .modal-overlay.nc-overlay.ncv2 .nc-panel { width: 100%; margin: 0; height: calc(100% - 10px - var(--ap-safe-t)); border-radius: var(--ap-r-sheet) var(--ap-r-sheet) 0 0; transform-origin: 50% 100%; }
  html.ap-ui .modal-overlay.nc-overlay.ncv2.open .nc-panel { animation: ncs-up var(--ap-d-slow) var(--ap-spring) both; }
  html.ap-ui .modal-overlay.nc-overlay.ncv2.ncs-closing .nc-panel { animation: ncs-down 240ms var(--ap-ease-in) both; }
  @keyframes ncs-up { from { transform: translateY(100%); } to { transform: none; } }
  @keyframes ncs-down { to { transform: translateY(100%); } }
  html.ap-ui .ncv2 .nc-head { padding-top: 16px; min-height: 60px; }
  html.ap-ui .ncv2 .nc-head::before { content: ''; position: absolute; top: 6px; left: 50%; width: 38px; height: 5px; margin-left: -19px; border-radius: 3px; background: var(--ap-fill-2); }
  html.ap-ui .ncv2 .nc-iconbtn, html.ap-ui .ncv2 .ncv-markall { width: 44px; height: 44px; min-width: 44px; background: transparent; z-index: 0; }
  html.ap-ui .ncv2 .nc-iconbtn::after, html.ap-ui .ncv2 .ncv-markall::after { content: ''; position: absolute; left: 7px; top: 7px; width: 30px; height: 30px; border-radius: 50%; background: var(--ap-fill); z-index: -1; }
  html.ap-ui .ncv2 .nc-chip.ncv-tab { height: 44px; }
  html.ap-ui .ncv2 .ncv-bar .nc-seg, html.ap-ui .ncv2 .ncv-search { height: 44px; }
  html.ap-ui .ncv2 .ncv-bar .nc-seg-btn { height: 38px; min-height: 38px; }
  html.ap-ui .ncv2 .ncs-stack-btn { min-height: 44px; }
  html.ap-ui .ncv2 .ncv-btn { min-height: 44px; }
}
@media (prefers-reduced-motion: reduce) {
  html.ap-ui .ncv2, html.ap-ui .ncv2 * { animation: none !important; transition: none !important; }
}

/* ── round 2 (after the first look) ── */
/* the overlay must not animate its own opacity: an opacity group cuts the panel's backdrop blur. The scrim fades on ::before. */
html.ap-ui .modal-overlay.nc-overlay.ncv2, html.ap-ui .modal-overlay.nc-overlay.ncv2.open, html.ap-ui .modal-overlay.nc-overlay.ncv2.ncs-closing { animation: none; background: transparent; }
html.ap-ui .modal-overlay.nc-overlay.ncv2::before { content: ''; position: fixed; inset: 0; background: var(--ap-scrim); animation: ap-fade var(--ap-d) ease both; pointer-events: none; }
html.ap-ui .modal-overlay.nc-overlay.ncv2.ncs-closing::before { animation: ncs-fade-out 220ms ease both; }
/* grouped background (white cards on soft grey), still frosted */
html.ap-ui .modal-overlay.nc-overlay.ncv2 .nc-panel { background: color-mix(in srgb, var(--ap-bg) 90%, transparent); }
@media (min-width: 769px) { html.ap-ui .ncv2 .nc-scrimfix { display: none; } html.ap-ui .modal-overlay.nc-overlay.ncv2::before { background: rgba(8, 12, 18, .10); } }
/* stacks: always labelled; the layered cards peek out below */
html.ap-ui .ncv2 .ncs-stack.is-collapsed .ncs-stack-head { display: flex; }
html.ap-ui .ncv2 .ncs-stack.is-collapsed { padding-bottom: 16px; }
html.ap-ui .ncv2 .ncs-stack.is-collapsed .ncs-more-n { display: none; }
html.ap-ui .ncv2 .ncs-stack-n { margin-left: 6px; color: var(--ap-ink-3); font-weight: 500; }
html.ap-ui .ncv2 .ncs-ghost { height: 44px; border-radius: 18px; }
html.ap-ui .ncv2 .ncs-ghost.g1 { bottom: 8px; left: 10px; right: 10px; opacity: 1; background: color-mix(in srgb, var(--ap-card) 82%, var(--ap-bg)); }
html.ap-ui .ncv2 .ncs-ghost.g2 { bottom: 0; left: 22px; right: 22px; opacity: 1; background: color-mix(in srgb, var(--ap-card) 62%, var(--ap-bg)); }
/* the cell only shows its action tray while swiping / open */
html.ap-ui .ncv2 .ncs-cell { background: transparent; overflow: visible; }
html.ap-ui .ncv2 .ncs-acts { visibility: hidden; border-radius: 18px; overflow: hidden; }
html.ap-ui .ncv2 .ncs-cell.is-dragging .ncs-acts, html.ap-ui .ncv2 .ncs-cell.is-open .ncs-acts { visibility: visible; }
html.ap-ui .ncv2 .ncs-cell.is-open, html.ap-ui .ncv2 .ncs-cell.is-dragging { overflow: hidden; border-radius: 18px; }
/* no chevrons (the whole card opens); quiet buttons stay quiet even on QuickBooks rows */
html.ap-ui .ncv2 .ncv-go { display: none; }
html.ap-ui .ncv2 .ncs-cell .ncv-row { padding-right: 16px; }
html.ap-ui .ncv2 .ncv-row .ncv-btn, html.ap-ui .ncv2 .ncv-row[data-topic="quickbooks"] .ncv-btn { border: 0; background: var(--ap-fill); color: var(--ap-ink); }
html.ap-ui .ncv2 .ncs-morebtn { top: auto; bottom: 8px; right: 8px; }
html.ap-ui .ncv2 .ncs-cell.is-open .ncs-morebtn { right: 230px; }
html.ap-ui .ncv2 .ncv-row .ncv-btn { background: var(--ap-tint) !important; color: var(--ap-blue-text) !important; border: 0 !important; height: auto; min-height: 32px; }
html.ap-ui .ncv2 .ncv-row .ncv-btn:hover { background: color-mix(in srgb, var(--ap-blue) 18%, transparent) !important; }
/* phone: the "•••" fallback stays in the accessibility tree and shows on keyboard focus, never as a stray on touch */
@media (max-width: 768px) { html.ap-ui .ncv2 .ncs-morebtn { opacity: 0 !important; pointer-events: none; } html.ap-ui .ncv2 .ncs-morebtn:focus-visible { opacity: 1 !important; pointer-events: auto; } }
/* night: topic tiles were too dark to read as tiles */
html[data-remodel-mode="night"].ap-ui .ncv2 .ncv-ico:not([data-tone="qb"]):not([data-tone="auto"]):not([data-tone="fail"]) { background: color-mix(in srgb, var(--ap-blue) 24%, var(--ap-card)); color: #cfe0f5; }
/* ── build (2026-11-08) ── */
/* snoozed lines (stored on the server): one quiet line + "Bring back now" */
html.ap-ui .ncv2 .ncs-snoozed { display: flex; align-items: center; justify-content: center; gap: 10px; flex-wrap: wrap; padding: 14px 8px 0; font: var(--ap-t-foot); color: var(--ap-ink-2); text-align: center; }
html.ap-ui .ncv2 .nc-panel:focus { outline: none; }
html.ap-ui .ncv2 .nc-panel:focus-visible { box-shadow: var(--ap-sh-3), 0 0 0 3px color-mix(in srgb, var(--ap-blue) 35%, transparent); }
/* phone: Unread | All keep a 44px tap area; the visible pill stays slim (transparent border + padding-box fill) */
@media (max-width: 768px) {
  html.ap-ui .ncv2 .ncv-bar .nc-seg { padding: 0; height: 44px; }
  html.ap-ui .ncv2 .ncv-bar .nc-seg-btn { height: 44px; min-height: 44px; border: 3px solid transparent; background-clip: padding-box; border-radius: 12px; }
}
/* white-on-blue fills use --ap-blue-fill (AA in night too) */
html.ap-ui .ncv2 .nc-chip-n, html.ap-ui .ncv2 .nc-chip.ncv-tab.active .nc-chip-n, html.ap-ui .ncv2 .ncs-act[data-act="read"] { background: var(--ap-blue-fill); }
