:root{
  --radius: 14px;
}
body{ background:#f7f8fb; }
.app-shell{ min-height:100vh; display:flex; flex-direction:column; }
.app-topbar{ position:sticky; top:0; z-index:1020; backdrop-filter:saturate(180%) blur(10px); background:#fff9; }
.app-content{ flex:1 0 auto; padding-bottom:80px; }
.app-bottombar{ position:sticky; bottom:0; background:#fff; }
.nav-btn{ display:flex; flex-direction:column; align-items:center; gap:2px; text-decoration:none; color:#6c757d; font-size:12px; }
.nav-btn i{ font-size:20px; }
.nav-btn.active, .nav-btn:hover{ color:#0d6efd; }
.card{ border-radius:var(--radius); }
.chips{ display:flex; gap:8px; overflow:auto; padding-bottom:4px; }
.chips .btn{ border-radius:999px; }
.feed-item-title{ font-weight:600; font-size:1.05rem; margin:2px 0 4px; }
.feed-meta{ font-size:.85rem; color:#6c757d; }
.post-thumb{ width:100%; border-radius:12px; object-fit:cover; }
.author-avatar{ width:36px; height:36px; border-radius:50%; object-fit:cover; }
.comment{ border-top:1px solid #eee; padding-top:8px; }
.map-wrap{ height:70vh; border-radius:12px; overflow:hidden; }
.badge-role{ font-size:.75rem; }

/* optional soft spacing */
.app-content{ padding-top: 1rem; padding-bottom: 1.25rem; }
.navbar-brand { letter-spacing:.1px; }
