/* Notifications: bell button and panel. */
/* Notifications bell: unread count on the bell, dropdown panel under it on desktop, full-height sheet on phones.
   Markup and behaviour live in js/app/shell.js (openNotifications, renderPanel). */
/* the count on the bell (1 to 9, then 9+) */
.bell-btn{overflow:visible}
.bell-count{position:absolute;top:-7px;right:-7px;min-width:19px;height:19px;padding:0 5px;border-radius:10px;display:grid;place-items:center;background:var(--bad);color:var(--paper);font:500 11px/1 var(--mono);letter-spacing:0;border:2px solid var(--ground);box-sizing:content-box;pointer-events:none}
.bell-btn[aria-expanded="true"]{background:var(--mint);border-color:var(--hair-strong)}
/* visually hidden text for screen readers (live count, "Unread." prefix, loading) */
.nt-sr{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
/* panel */
.nt-panel{position:fixed;z-index:var(--z-popover);width:min(400px,calc(100vw - 16px));max-height:min(560px,var(--nt-max,560px));display:flex;flex-direction:column;background:var(--paper);color:var(--ink);border:1px solid var(--hair-strong);box-shadow:0 18px 40px -12px rgba(0,0,0,.28);opacity:0;transform:translateY(-4px);transition:opacity .14s ease,transform .14s ease}
.nt-panel.in{opacity:1;transform:none}
.nt-panel:focus{outline:none}
.nt-head{display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid var(--hair);flex:0 0 auto}
.nt-head .sp{flex:1}
.nt-title{font:600 16px/1.2 var(--display);margin:0}
#ntMarkAll{white-space:nowrap}
#ntMarkAll:disabled{opacity:.45;cursor:default;text-decoration:none}
.nt-close{display:none}
.nt-list{overflow-y:auto;overscroll-behavior:contain;flex:1 1 auto;-webkit-overflow-scrolling:touch}
.nt-group + .nt-group{border-top:1px solid var(--hair)}
.nt-gh{margin:0;padding:12px 16px 6px;font:500 11px/1 var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
.nt-item{display:grid;grid-template-columns:32px 1fr 10px;gap:12px;align-items:start;padding:11px 16px;color:var(--ink);text-decoration:none;position:relative}
.nt-item + .nt-item{border-top:1px solid var(--hair)}
.nt-item:focus-visible{outline:2px solid var(--ink);outline-offset:-3px}
@media (hover:hover){
  .nt-item:hover{background:var(--mint)}
}
.nt-ic{width:32px;height:32px;display:grid;place-items:center;border:1px solid var(--hair);background:var(--ground)}
.nt-ic svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.nt-item[data-kind="payment"] .nt-ic,.nt-item[data-kind="delivered"] .nt-ic{color:var(--ok)}
.nt-item[data-kind="refund"] .nt-ic{color:var(--bad)}
.nt-body{display:grid;gap:3px;min-width:0}
/* ---------- fix round 2026-09-25 (audit 03) ---------- */
/* the kind label is gone from each row (the icon carries it); long lines clamp to two lines */
.nt-text{font-size:var(--fs-small);line-height:1.4;color:var(--ink-soft);overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.nt-meta{font:400 12px/1.3 var(--mono);color:var(--muted)}
.nt-dot{width:8px;height:8px;border-radius:var(--r-round);margin-top:6px;background:transparent}
.nt-item.unread .nt-text{color:var(--ink);font-weight:600}
.nt-item.unread .nt-dot{background:var(--bad)}
/* one signal for unread: bold text and the red dot. The icon keeps one colour. */
.nt-item.unread .nt-ic{background:var(--ground);border-color:var(--hair);color:inherit}
.nt-item.nt-new{animation:ntNew 1.6s ease-out}
@keyframes ntNew{from{background:var(--accent)}to{background:transparent}}
/* empty + error */
.nt-empty{display:grid;justify-items:center;text-align:center;gap:6px;padding:40px 24px 44px}
.nt-empty p{margin:0;max-width:30ch}
.nt-empty svg{width:28px;height:28px;fill:none;stroke:var(--muted);stroke-width:1.5;margin-bottom:6px}
.nt-empty .btn{margin-top:10px}
/* loading skeleton */
.nt-skel{display:grid;grid-template-columns:32px 1fr;gap:12px;padding:12px 16px}
.nt-skel + .nt-skel{border-top:1px solid var(--hair)}
.nt-skel > span:first-child{width:32px;height:32px;background:var(--viz)}
.nt-skel > span:last-child{display:grid;gap:7px;align-content:center}
.nt-skel i{display:block;height:10px;background:var(--viz);animation:ntPulse 1.1s ease-in-out infinite alternate}
.nt-skel i:last-child{width:40%}
@keyframes ntPulse{from{opacity:.5}to{opacity:1}}
/* phone: full-height sheet over the app */
.nt-panel.nt-sheet{inset:0;top:0;right:0;width:100%;max-height:none;height:100dvh;border:0;box-shadow:none;transform:translateY(12px);padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
.nt-panel.nt-sheet.in{transform:none}
.nt-sheet .nt-head{padding:12px var(--gutter-r) 12px var(--gutter);min-height:64px;box-sizing:border-box}
.nt-sheet .nt-close{display:inline-flex}
.nt-sheet .nt-gh{padding-left:var(--gutter)}
.nt-sheet .nt-item{padding:14px var(--gutter-r) 14px var(--gutter);min-height:56px}
.nt-sheet .nt-text{font-size:var(--fs-body-s)}
html.nt-lock,html.nt-lock body{overflow:hidden}
@media (prefers-reduced-motion:reduce){
  .nt-panel,.nt-panel.nt-sheet{transition:none;transform:none}
  .nt-item.nt-new,.nt-skel i{animation:none}
}
.nt-prev{font-size:var(--fs-ui);line-height:1.4;color:var(--muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.nt-item[data-kind="accepted"] .nt-ic,.nt-item[data-kind="payout"] .nt-ic{color:var(--ok)}
.nt-item[data-kind="declined"] .nt-ic,.nt-item[data-kind="expired"] .nt-ic,.nt-item[data-kind="deadline"] .nt-ic{color:var(--bad)}
.drawer-close{display:none}
@media (max-width:960px){
  .drawer-close{display:inline-flex;position:absolute;top:14px;right:14px;min-height:44px;min-width:44px;justify-content:center;z-index:1}
}
