#site-footer { border-top: 1px solid var(--line); padding: 80px 0 96px; }
.ftr { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; }
.ftr-l { display: flex; flex-direction: column; gap: 14px; }
.ftr-site { font: 700 18px/1 var(--font-display); color: var(--fg); }
.ftr-tag { color: var(--fg-2); }
.ftr-links { display: flex; gap: 10px; color: var(--fg-2); }
.ftr-links a { color: var(--fg); }
.ftr-count b { color: var(--fg); font-weight: 500; }
.ftr-r { display: flex; flex-direction: column; gap: 14px; }
.ftr-r .slot-h { margin-top: 0; }
.push-row { display: flex; gap: 8px; }
.push-in { flex: 1; background: var(--bg); border: 1px solid var(--line); color: var(--fg); padding: 12px 14px; }
.push-in:focus { border-color: var(--fg-3); }
.push-in:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.push-btn { background: var(--accent); color: var(--bg); font: 600 14px/1 var(--font-text); padding: 0 18px; }
.push-banner { position: fixed; top: 12px; left: 50%; transform: translate(-50%, -140%); width: min(380px, calc(100vw - 24px)); z-index: 9999;
  display: flex; gap: 10px; align-items: center; padding: 11px 12px; background: rgba(31,31,31,.85); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px);
  border: 1px solid rgba(255,255,255,.14); border-radius: 20px; transition: transform .5s cubic-bezier(.2,.9,.3,1.2); }
.push-banner.in { transform: translate(-50%, 0); }
.push-banner img { width: 38px; height: 38px; border-radius: 10px; object-fit: cover; }
.push-t { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; font-size: 12px; color: var(--white); }
.push-m { font-size: 12.5px; line-height: 1.35; color: var(--fg); }
.toast { position: fixed; top: 60px; left: 50%; transform: translateX(-50%); z-index: 9999; background: var(--white); color: var(--bg); padding: 10px 18px; opacity: 0; transition: opacity .25s ease, top .25s ease; }
.toast.in { opacity: 1; top: 72px; }
@media (max-width: 640px) { .ftr { grid-template-columns: 1fr; } }
