/* wbs.css — shared styles for the mywbs.com member pages (2026-09-01).
   Same dark design language as the landing/account pages (#0b0d12 ground,
   #181a20 cards, indigo #818cf8 + teal #2dd4bf accents), laid out like a
   classic social feed: sticky top nav, centered column, cards. */

* { margin:0; padding:0; box-sizing:border-box; }
[hidden] { display:none !important; }

:root {
  --bg:#0b0d12; --card:#181a20; --card-2:#20232b; --line:#2a2d36;
  --line-2:#3a3e4a; --text:#f2f3f5; --muted:#9aa0ab; --faint:#8a8f99;
  --accent:#818cf8; --accent-2:#939df9; --teal:#2dd4bf; --link:#7aa7ff;
  --danger-bg:#3a1f22; --danger-line:#7a3b41; --danger-text:#f0b9be;
  --ok-bg:#16301f; --ok-line:#2f6b45; --ok-text:#a6e0bd;
}

body {
  min-height:100vh; background:var(--bg); color:var(--text);
  font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  -webkit-text-size-adjust:100%;
}
a { color:var(--link); text-decoration:none; }
a:hover { text-decoration:underline; }
a:focus-visible, button:focus-visible, input:focus-visible,
textarea:focus-visible, select:focus-visible {
  outline:2px solid var(--accent); outline-offset:2px;
}

/* ---- top nav -----------------------------------------------------------
   The site-wide menu (pacificair-style, with dropdown submenus) lives in
   its own stylesheet, /static/wbs-nav.css, because the standalone pages
   (landing, account, terms, privacy) load it WITHOUT this file. */

/* ---- page column ------------------------------------------------------ */
.page { max-width:620px; margin:0 auto; padding:20px 14px 80px; }
.page--wide { max-width:980px; }

/* ---- full-width shell (desktop) ---------------------------------------
   wbs.js rebuilds #app into this three-region grid once signed in: left
   rail (profile + shortcuts) pinned to the left edge, content in the
   middle, right rail (requests + suggestions) pinned to the right edge —
   so a 16" screen is actually used, Facebook-style. justify-content:
   space-between spreads the regions across the full window width. */
.shell {
  display:grid; grid-template-columns:290px minmax(0,760px) 340px;
  justify-content:space-between; column-gap:28px;
  max-width:1760px; margin:0 auto; padding:20px 20px 80px;
}
.shell.no-right { grid-template-columns:290px minmax(0,1fr); }
.shell-main { min-width:0; }
.rail { min-width:0; }
.rail-sticky { position:sticky; top:76px; }
/* Taller than the window (fitRails in wbs.js): scroll with the page instead
   of pinning a top whose tail could never be reached. Never overflow:auto —
   the rail does not scroll (owner rule). */
.rail-sticky.unstuck { position:static; }

.rail-card { background:var(--card); border:1px solid var(--line);
  border-radius:14px; padding:10px; margin-bottom:14px; }
.rail-title { color:var(--muted); font-size:.82em; font-weight:700;
  text-transform:uppercase; letter-spacing:.05em; padding:6px 10px 8px; }
.rail-me { display:flex; align-items:center; gap:11px; padding:8px 10px; }
.rail-me img { width:44px; height:44px; border-radius:50%;
  border:2px solid var(--line-2); }
.rail-me .who a { color:var(--text); font-weight:700; }
.rail-me .sub { color:var(--faint); font-size:.8em; }
.rail-nav a { display:flex; align-items:center; gap:12px; min-height:44px;
  padding:0 10px; border-radius:10px; color:var(--text); font-weight:600;
  font-size:.95em; }
.rail-nav a:hover { background:var(--card-2); text-decoration:none; }
/* Where am I (owner request 2026-09-02): the nav card is tinted with the
   section colour wbs-nav.css sets per html[data-section], the current entry
   is a solid chip in that colour, and the current section's heading turns
   white — visible even when the entry itself is scrolled out of view. */
.rail-nav-card { background:var(--sec-rail, var(--card));
  border-color:var(--sec-line, var(--line)); }
.rail-nav a.active { background:var(--sec-bar, var(--accent)); color:#fff; }
.rail-nav a.active:hover { background:var(--sec-bar, var(--accent)); }
.rail-nav a.active .ico { background:rgba(255,255,255,.18); }
.rail-nav .rail-sec.current { color:#fff; }
.rail-nav a .nav-badge { margin-left:auto; }
.rail-nav .ico { width:34px; height:34px; border-radius:50%; flex:none;
  background:var(--card-2); display:flex; align-items:center;
  justify-content:center; font-size:1.05em; }
.rail-row { display:flex; align-items:center; gap:10px; padding:8px 10px;
  border-radius:10px; }
.rail-row:hover { background:var(--card-2); }
.rail-row img { width:38px; height:38px; border-radius:50%;
  border:1px solid var(--line-2); flex:none; }
.rail-row .who { flex:1; min-width:0; }
.rail-row .who a { color:var(--text); font-weight:600; font-size:.92em;
  display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.rail-row .acts { display:flex; gap:6px; flex:none; }
.avatar-wrap { position:relative; display:inline-block; line-height:0; }
.dot-online { position:absolute; right:-1px; bottom:-1px; width:11px;
  height:11px; border-radius:50%; background:#31d158;
  border:2px solid var(--card); }
.online-badge { color:#31d158; font-weight:600; font-size:.88em;
  margin-top:8px; }
.rail-status .who a { font-size:.88em; }
.rail-status .nstat { color:var(--teal); font-size:.82em; font-style:italic;
  line-height:1.4; white-space:normal; overflow-wrap:break-word; margin-top:1px; }
.rail-row .btn-sm { min-height:30px; padding:4px 11px; font-size:.82em; }
.rail-foot { color:var(--faint); font-size:.78em; padding:12px 10px 4px;
  line-height:1.7; }
.rail-foot a { color:var(--faint); }

/* Rails give way as the window narrows: right first, then left. */
@media (max-width:1180px) {
  .shell { grid-template-columns:290px minmax(0,1fr); }
  .shell > .rail-right { display:none; }
}
@media (max-width:900px) {
  .shell, .shell.no-right { grid-template-columns:minmax(0,760px); justify-content:center; }
  .shell > .rail-left { display:none; }
}
.page-title { font-size:1.3em; font-weight:700; margin:6px 2px 16px; }
.section-title { font-size:1.02em; font-weight:700; color:var(--muted);
  margin:26px 2px 10px; text-transform:uppercase; letter-spacing:.05em;
  scroll-margin-top:70px;   /* menu-submenu #anchors land below the sticky bar */ }

.card {
  background:var(--card); border:1px solid var(--line);
  border-radius:14px; padding:16px; margin-bottom:14px;
}
.empty { color:var(--muted); text-align:center; padding:28px 16px;
  line-height:1.6; }
.spinner { color:var(--muted); text-align:center; padding:24px; }

/* ---- buttons ---------------------------------------------------------- */
.btn {
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  min-height:40px; padding:8px 18px; border-radius:10px; cursor:pointer;
  background:var(--card-2); border:1px solid var(--line-2); color:var(--text);
  font-size:.93em; font-weight:600; font-family:inherit; text-decoration:none;
  transition:background .15s, border-color .15s;
}
.btn:hover { background:#2a2e39; text-decoration:none; }
.btn:disabled { opacity:.45; cursor:not-allowed; }
.btn-primary { background:var(--accent); border-color:var(--accent); color:#0b0d12; }
.btn-primary:hover { background:var(--accent-2); border-color:var(--accent-2); }
.btn-danger { background:transparent; border-color:var(--danger-line); color:#e07a83; }
.btn-danger:hover { background:var(--danger-bg); }
.btn-sm { min-height:34px; padding:5px 13px; font-size:.86em; border-radius:8px; }

/* ---- composer --------------------------------------------------------- */
.composer textarea {
  width:100%; min-height:74px; resize:vertical; border:none; outline:none;
  background:transparent; color:var(--text); font-family:inherit;
  font-size:1.04em; line-height:1.5;
}
.composer textarea::placeholder { color:var(--faint); }
.composer-previews { display:flex; gap:8px; flex-wrap:wrap; margin:6px 0 2px; }
.composer-previews .pv { position:relative; }
.composer-previews img { width:74px; height:74px; object-fit:cover;
  border-radius:10px; border:1px solid var(--line-2); display:block; }
.composer-previews .pv button {
  position:absolute; top:-7px; right:-7px; width:22px; height:22px;
  border-radius:50%; border:1px solid var(--line-2); background:var(--card-2);
  color:var(--text); font-size:12px; line-height:1; cursor:pointer;
}
.composer-bar { display:flex; align-items:center; gap:10px;
  border-top:1px solid var(--line); margin-top:10px; padding-top:12px; }
.composer-bar .grow { flex:1; }

/* ---- post cards ------------------------------------------------------- */
.post { padding:14px 16px 12px; }
.post-head { display:flex; align-items:center; gap:11px; margin-bottom:10px; }
.post-head .avatar { width:42px; height:42px; border-radius:50%;
  border:1px solid var(--line-2); display:block; flex:none; }
.post-head .who { flex:1; min-width:0; }
.post-head .who a { color:var(--text); font-weight:700; }
.post-head .who a.group-tag { color:var(--teal); }
.post-head .when { color:var(--faint); font-size:.82em; margin-top:1px; }
.post-body { white-space:pre-wrap; overflow-wrap:break-word;
  line-height:1.55; font-size:.99em; }
.post-imgs { display:grid; gap:6px; margin-top:10px; }
.post-imgs a { display:block; }
.post-imgs img { width:100%; height:100%; object-fit:cover; display:block;
  border-radius:10px; border:1px solid var(--line); background:var(--card-2); }
/* One photo keeps its own ratio (from the width/height attributes the API
   sends), capped at 460px tall. height:auto beats the grid rule's 100% so
   the ratio — not the empty anchor — sizes the box before the image loads. */
.post-imgs.n1 img { height:auto; max-height:460px; object-fit:contain; background:#0e1015; }
.post-imgs.n2, .post-imgs.n3, .post-imgs.n4 {
  grid-template-columns:1fr 1fr; }
.post-imgs.n2 img, .post-imgs.n3 img, .post-imgs.n4 img { aspect-ratio:1/1; }
.post-imgs.n3 a:first-child { grid-column:1 / -1; }
.post-imgs.n3 a:first-child img { aspect-ratio:2/1; }

/* since you were here (2026-09-02): the banner on load, the pill while reading */
.since-card { display:flex; align-items:center; justify-content:space-between; gap:12px;
  padding:10px 14px; margin-bottom:12px; background:var(--card-2); }
.new-pill { position:sticky; top:76px; z-index:5; display:block; margin:0 auto 12px;
  box-shadow:0 8px 24px rgba(0,0,0,.45); }

/* audience chip (2026-09-02): a friends-only story says so on the name line */
.aud-chip { display:inline-block; font-size:.76em; color:var(--muted); border:1px solid var(--line-2);
  border-radius:999px; padding:1px 7px; margin-left:8px; vertical-align:middle; }

/* editing (2026-09-02): the author's own story or comment, 15 minutes */
.post-edit { margin-top:10px; }
.post-edit textarea { width:100%; min-height:96px; resize:vertical; padding:10px 12px;
  border-radius:10px; border:1px solid var(--line-2); background:var(--card-2);
  color:var(--text); font:inherit; line-height:1.45; }
.post-edit .acts { display:flex; gap:8px; justify-content:flex-end; margin-top:8px; }
.edited { color:var(--faint); font-size:.92em; }
.comment-edit { display:flex; gap:6px; align-items:center; margin:2px 0 4px; }
.comment-edit input { flex:1; min-width:0; padding:8px 10px; border-radius:9px;
  border:1px solid var(--line-2); background:var(--card-2); color:var(--text); font:inherit; }

/* likes + comments */
.post-acts { display:flex; gap:8px; border-top:1px solid var(--line);
  margin-top:12px; padding-top:8px; }
.act-btn { flex:1; display:inline-flex; align-items:center; justify-content:center;
  gap:8px; min-height:38px; background:none; border:none; border-radius:9px;
  color:var(--muted); font-family:inherit; font-weight:600; font-size:.92em;
  cursor:pointer; }
.act-btn:hover { background:var(--card-2); color:var(--text); }
.act-btn.liked { color:#e0245e; }   /* the classic red heart */

/* polls */
.poll { margin-top:12px; display:flex; flex-direction:column; gap:8px; }
.poll-opt { position:relative; display:block; width:100%; text-align:left;
  border:1px solid var(--line-2); border-radius:10px; padding:10px 14px;
  cursor:pointer; background:var(--card-2); overflow:hidden;
  font-family:inherit; font-size:.94em; color:var(--text); }
.poll-opt:hover { border-color:var(--accent); }
.poll-opt .bar { position:absolute; left:0; top:0; bottom:0; width:0;
  background:rgba(129,140,248,.16); transition:width .35s; }
.poll-opt.mine { border-color:var(--accent); }
.poll-opt.mine .bar { background:rgba(129,140,248,.28); }
.poll-opt .lab { position:relative; display:flex; align-items:center;
  justify-content:space-between; gap:12px; }
.poll-opt .pct { color:var(--muted); font-size:.86em; flex:none; }
.poll-opt.mine .pct { color:var(--accent); font-weight:700; }
.poll-total { color:var(--faint); font-size:.8em; padding:2px 2px 0; }

/* composer poll builder */
.poll-builder { border-top:1px solid var(--line); margin-top:10px;
  padding-top:12px; display:flex; flex-direction:column; gap:8px; }
.poll-builder input { min-height:40px; padding:8px 14px; border-radius:10px;
  background:var(--card-2); border:1px solid var(--line-2); color:var(--text);
  font-family:inherit; font-size:.93em; }
.poll-builder input::placeholder { color:var(--faint); }
.poll-builder .pb-foot { display:flex; gap:10px; }
.comments { border-top:1px solid var(--line); margin-top:8px; padding-top:12px; }
.comment { display:flex; gap:9px; margin-bottom:10px; align-items:flex-start; }
.comment > a > img { width:30px; height:30px; border-radius:50%;
  border:1px solid var(--line-2); display:block; }
.comment .cright { min-width:0; max-width:100%; }
.comment .bubble { background:var(--card-2); border-radius:14px;
  padding:8px 13px; display:inline-block; max-width:100%; }
.comment .bubble > a { color:var(--text); font-weight:700; font-size:.88em; }
.comment .cbody { white-space:pre-wrap; overflow-wrap:break-word;
  font-size:.93em; line-height:1.45; margin-top:2px; }
.comment .cmeta { color:var(--faint); font-size:.76em; margin:3px 0 0 13px;
  display:flex; gap:12px; }
.comment .cmeta button { background:none; border:none; color:var(--faint);
  cursor:pointer; font-family:inherit; font-size:1em; padding:0; }
.comment .cmeta button:hover { color:#e07a83; }
.comment-form { display:flex; gap:8px; margin-top:4px; }
.comment-form input { flex:1; min-width:0; min-height:38px; padding:8px 14px;
  border-radius:999px; background:var(--card-2); border:1px solid var(--line-2);
  color:var(--text); font-family:inherit; font-size:.93em; }
.comment-form input::placeholder { color:var(--faint); }

/* "⋯" menu */
.menu-wrap { position:relative; flex:none; }
.menu-btn {
  width:36px; height:36px; border-radius:50%; border:none; cursor:pointer;
  background:transparent; color:var(--muted); font-size:1.25em; line-height:1;
}
.menu-btn:hover { background:var(--card-2); color:var(--text); }
.menu {
  position:absolute; right:0; top:40px; z-index:40; min-width:190px;
  background:var(--card-2); border:1px solid var(--line-2); border-radius:12px;
  padding:6px; box-shadow:0 12px 32px rgba(0,0,0,.5);
}
.menu button {
  display:block; width:100%; text-align:left; padding:10px 12px; min-height:42px;
  background:none; border:none; border-radius:8px; color:var(--text);
  font-size:.92em; font-family:inherit; cursor:pointer;
}
.menu button:hover { background:#323644; }
.menu button.danger { color:#e07a83; }

/* ---- people / friends lists ------------------------------------------ */
.people-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(210px,1fr));
  gap:12px; }
.person-card { text-align:center; padding:20px 14px 16px; margin:0; }
.person-card .avatar { width:64px; height:64px; border-radius:50%;
  border:2px solid var(--line-2); margin:0 auto 10px; display:block; }
.person-card .name { font-weight:700; }
.person-card .name a { color:var(--text); }
.person-card .since { color:var(--faint); font-size:.8em; margin:3px 0 12px; }
.person-row { display:flex; align-items:center; gap:12px; padding:11px 14px; }
.person-row .avatar { width:44px; height:44px; border-radius:50%;
  border:1px solid var(--line-2); flex:none; }
.person-row .who { flex:1; min-width:0; }
.person-row .who a { color:var(--text); font-weight:700; }
.person-row .sub { color:var(--faint); font-size:.82em; }
.person-row .acts { display:flex; gap:8px; flex:none; }
.search-box {
  width:100%; min-height:46px; padding:10px 16px; border-radius:12px;
  background:var(--card); border:1px solid var(--line); color:var(--text);
  font-size:1em; font-family:inherit; margin-bottom:16px;
}
.search-box::placeholder { color:var(--faint); }

/* ---- profile header --------------------------------------------------- */
.profile-head { text-align:center; padding:28px 18px 22px; }
.profile-head .avatar { width:104px; height:104px; border-radius:50%;
  border:3px solid var(--line-2); margin:0 auto 14px; display:block; }
.profile-head h1 { font-size:1.5em; }
.role-chip { display:inline-block; background:#242745; color:var(--accent);
  border-radius:999px; padding:3px 14px; font-size:.76em; font-weight:600;
  letter-spacing:.03em; margin:8px 0 2px; text-transform:uppercase; }
.profile-meta { color:var(--muted); font-size:.9em; margin-top:4px; }
.profile-status { color:var(--teal); font-style:italic; font-size:.98em;
  margin-top:8px; line-height:1.5; overflow-wrap:break-word; }

/* status editor (feed page) */
.status-card { display:flex; align-items:center; gap:10px; padding:12px 16px; }
.status-card .status-icon { font-size:1.2em; flex:none; }
.status-card input { flex:1; min-width:0; min-height:40px; padding:8px 15px;
  border-radius:999px; background:var(--card-2); border:1px solid var(--line-2);
  color:var(--teal); font-style:italic; font-family:inherit; font-size:.93em; }
.status-card input::placeholder { color:var(--faint); font-style:italic; }
.profile-counts { display:flex; justify-content:center; gap:26px; margin:14px 0 4px;
  color:var(--muted); font-size:.9em; }
.profile-counts strong { color:var(--text); font-size:1.15em; display:block; }
.profile-counts a { color:var(--muted); }
.profile-counts a:hover { text-decoration:none; }
.profile-counts a:hover strong { color:var(--accent); }
.profile-actions { display:flex; justify-content:center; gap:10px;
  flex-wrap:wrap; margin-top:14px; }

/* ---- groups ------------------------------------------------------------ */
.group-head { padding:24px 24px 20px; }
.group-head h1 { font-size:1.5em; margin-bottom:6px; }
.group-head .gdesc { color:var(--muted); line-height:1.55; margin-bottom:10px;
  white-space:pre-wrap; }
.group-head .gmeta { color:var(--faint); font-size:.86em; margin-bottom:14px; }
.group-head .gacts { display:flex; gap:10px; flex-wrap:wrap; }
.gmembers { display:flex; flex-wrap:wrap; gap:8px; }
.gmember { display:inline-flex; align-items:center; gap:8px;
  background:var(--card-2); border:1px solid var(--line-2);
  border-radius:999px; padding:5px 13px 5px 6px; }
.gmember img { width:26px; height:26px; border-radius:50%; display:block; }
.gmember a { color:var(--text); font-size:.86em; font-weight:600; }
.gmember .owner-star { color:var(--accent); font-size:.8em; }
.gmember button { background:none; border:none; color:var(--faint);
  cursor:pointer; font-size:.9em; padding:0 2px; }
.gmember button:hover { color:#e07a83; }
.group-card { display:flex; flex-direction:column; gap:8px; padding:18px; }
.group-card h3 a { color:var(--text); font-size:1.08em; }
.group-card .gdesc { color:var(--muted); font-size:.9em; line-height:1.5;
  flex:1; }
.group-card .gfoot { display:flex; align-items:center; gap:10px; }
.group-card .gcount { color:var(--faint); font-size:.84em; flex:1; }
.groups-grid { display:grid; grid-template-columns:repeat(auto-fill,
  minmax(260px,1fr)); gap:12px; }

/* ---- events ------------------------------------------------------------ */
.event-card { display:flex; flex-direction:column; gap:7px; padding:18px; }
.event-card .edate { color:var(--teal); font-size:.84em; font-weight:700;
  text-transform:uppercase; letter-spacing:.04em; }
.event-card h3 a { color:var(--text); font-size:1.08em; }
.event-card .emeta { color:var(--muted); font-size:.88em; line-height:1.5; }
.event-card .efoot { display:flex; align-items:center; gap:10px; margin-top:4px; }
.event-card .ecount { color:var(--faint); font-size:.84em; flex:1; }
.events-grid { display:grid; grid-template-columns:repeat(auto-fill,
  minmax(280px,1fr)); gap:12px; }
.event-head { padding:24px 24px 20px; }
.event-head .edate { color:var(--teal); font-weight:700; font-size:.9em;
  text-transform:uppercase; letter-spacing:.05em; margin-bottom:6px; }
.event-head h1 { font-size:1.5em; margin-bottom:8px; }
.event-head .emeta { color:var(--muted); line-height:1.6; margin-bottom:6px; }
.event-head .edesc { color:var(--text); line-height:1.6; margin:12px 0 4px;
  white-space:pre-wrap; }
.rsvp-bar { display:flex; gap:8px; margin-top:16px; flex-wrap:wrap; }
.rsvp-bar .btn.sel { background:var(--accent); border-color:var(--accent);
  color:#0b0d12; }
.invite-row { display:flex; align-items:center; gap:10px; padding:8px 4px; }
.invite-row img { width:34px; height:34px; border-radius:50%;
  border:1px solid var(--line-2); }
.invite-row .who { flex:1; min-width:0; font-weight:600; font-size:.93em; }

/* ---- videos ------------------------------------------------------------ */
.vid-grid { display:grid; grid-template-columns:repeat(auto-fill,
  minmax(240px,1fr)); gap:12px; }
.vid-tile { padding:0; overflow:hidden; }
.vid-tile video { width:100%; aspect-ratio:16/9; object-fit:cover;
  display:block; background:#000; }
.vid-tile .vinfo { padding:10px 14px 12px; }
.vid-tile .vinfo a { color:var(--text); font-weight:700; font-size:.95em; }
.vid-tile .vmeta { color:var(--faint); font-size:.8em; margin-top:3px; }
.watch-player { width:100%; max-height:70vh; background:#000;
  border-radius:12px; display:block; }

/* ---- profile song ------------------------------------------------------ */
.music-card { padding:14px 18px 16px; }
.music-card .m-head { display:flex; align-items:center; gap:12px;
  margin-bottom:10px; }
.music-card .m-icon { font-size:1.5em; }
.music-card .m-title { font-weight:700; }
.music-card .m-artist { color:var(--muted); font-size:.88em; margin-top:1px; }
.music-card audio { width:100%; height:38px; }

/* ---- profile About card ------------------------------------------------ */
.about-card h2 { font-size:1.05em; display:flex; align-items:center; gap:10px; }
.about-card h2 .grow { flex:1; }
.about-intro { white-space:pre-wrap; line-height:1.55; margin:10px 0 4px; }
.about-rows { margin-top:10px; }
.about-row { display:grid; grid-template-columns:110px minmax(0,1fr);
  gap:12px; padding:9px 0; border-top:1px solid var(--line); }
.about-row .k { color:var(--muted); font-size:.8em; font-weight:600;
  text-transform:uppercase; letter-spacing:.04em; padding-top:2px; }
.about-row .v { white-space:pre-wrap; line-height:1.5; overflow-wrap:break-word; }

/* ---- moderation ------------------------------------------------------- */
.report-card { border-left:3px solid var(--danger-line); }
.report-meta { display:flex; gap:8px; align-items:center; flex-wrap:wrap;
  color:var(--muted); font-size:.86em; margin-bottom:10px; }
.reason-chip { background:var(--danger-bg); color:var(--danger-text);
  border:1px solid var(--danger-line); border-radius:999px; padding:2px 12px;
  font-size:.86em; font-weight:600; }
.evidence { background:#14161c; border:1px solid var(--line); border-radius:10px;
  padding:12px 14px; margin:10px 0; }
.evidence .post-body { font-size:.94em; }
.evidence .imgs { display:flex; gap:6px; margin-top:8px; flex-wrap:wrap; }
.evidence .imgs img { width:84px; height:84px; object-fit:cover;
  border-radius:8px; border:1px solid var(--line-2); }
.mod-acts { display:flex; gap:8px; flex-wrap:wrap; margin-top:10px; }
.log-line { color:var(--muted); font-size:.88em; padding:8px 2px;
  border-bottom:1px solid var(--line); line-height:1.5; }
.log-line:last-child { border-bottom:none; }
.status-note { font-size:.82em; color:var(--teal); }

/* ---- dialogs / toasts ------------------------------------------------- */
dialog.wbs-dialog {
  background:var(--card); color:var(--text); border:1px solid var(--line-2);
  border-radius:16px; padding:22px; width:min(92vw, 420px);
}
dialog.wbs-dialog::backdrop { background:rgba(0,0,0,.6); }
dialog.wbs-dialog h2 { font-size:1.1em; margin-bottom:14px; }
dialog.wbs-dialog label { display:block; color:var(--muted); font-size:.86em;
  margin:12px 0 6px; }
dialog.wbs-dialog select, dialog.wbs-dialog textarea {
  width:100%; padding:10px 12px; border-radius:10px; background:var(--card-2);
  border:1px solid var(--line-2); color:var(--text); font-family:inherit;
  font-size:.95em;
}
dialog.wbs-dialog textarea { min-height:84px; resize:vertical; }
.dialog-acts { display:flex; gap:10px; margin-top:18px; }
.dialog-acts .btn { flex:1; }

.toast {
  position:fixed; left:50%; bottom:26px; transform:translateX(-50%);
  z-index:100; max-width:min(92vw, 480px); padding:11px 20px;
  border-radius:12px; background:var(--card-2); border:1px solid var(--line-2);
  color:var(--text); font-size:.93em; box-shadow:0 10px 30px rgba(0,0,0,.5);
}
.toast.err { background:var(--danger-bg); border-color:var(--danger-line);
  color:var(--danger-text); }
.toast.okay { background:var(--ok-bg); border-color:var(--ok-line);
  color:var(--ok-text); }

/* ---- signed-out gate --------------------------------------------------- */
.gate { text-align:center; padding:44px 20px; }
.gate h1 { font-size:1.45em; margin-bottom:10px; }
.gate p { color:var(--muted); margin-bottom:24px; line-height:1.6; }

@media (max-width:560px) {
  .person-row { flex-wrap:wrap; }
  .person-row .acts { width:100%; justify-content:flex-end; }
}

/* Verified badge — owner-granted blue check (WBS.vbadge). Rendered only
   from the server's verified flag, never from member-typed text. */
.v-badge { display:inline-block; width:15px; height:15px; line-height:15px;
  border-radius:50%; background:#1d9bf0; color:#fff; font-size:10px;
  font-weight:700; text-align:center; margin-left:5px; vertical-align:2px;
  flex:none; }
h1 .v-badge { width:20px; height:20px; line-height:20px; font-size:13px;
  vertical-align:4px; margin-left:8px; }

/* Hashtags — topic links in post/comment text, and the Trending rail. */
.tag-link { color:var(--teal); font-weight:600; }
.tag-link:hover { text-decoration:underline; }
.trend-row { display:flex; align-items:baseline; gap:8px; padding:7px 2px;
  border-radius:8px; }
.trend-row:hover { background:var(--card-2); text-decoration:none; }
.trend-tag { color:var(--text); font-weight:700; font-size:.95em; }
.trend-n { color:var(--faint); font-size:.8em; margin-left:auto; }

/* Top 8 — the MySpace signature. */
.top8-card h2, .wall-card h2 { display:flex; align-items:center; gap:10px;
  color:var(--text); font-size:1.05em; margin-bottom:12px; }
.top8-grid { display:grid; gap:12px;
  grid-template-columns:repeat(auto-fill, minmax(110px, 1fr)); }
.top8-cell { position:relative; display:flex; flex-direction:column;
  align-items:center; gap:6px; padding:14px 8px 10px; border-radius:12px;
  background:var(--card-2); border:1px solid var(--line-2);
  color:inherit; font:inherit; cursor:pointer; text-align:center; }
.top8-cell:hover { border-color:var(--accent); text-decoration:none; }
.top8-cell img { width:56px; height:56px; border-radius:50%;
  object-fit:cover; }
.top8-cell .t8rank { position:absolute; top:6px; left:8px;
  color:var(--accent); font-weight:800; font-size:.8em; }
.top8-cell .t8name { color:var(--text); font-size:.82em; font-weight:600;
  max-width:100%; overflow:hidden; text-overflow:ellipsis;
  white-space:nowrap; }
.t8hint { color:var(--faint); font-size:.85em; margin-bottom:12px; }
.t8pool { display:flex; flex-wrap:wrap; gap:8px; margin-top:14px; }

/* Guestbook wall. */
.wall-writer { display:flex; gap:10px; align-items:flex-end;
  margin-bottom:14px; }
.wall-input { flex:1; min-height:52px; resize:vertical; padding:10px 14px;
  border-radius:10px; background:var(--card-2);
  border:1px solid var(--line-2); color:var(--text); font-family:inherit;
  font-size:.95em; }
.wall-row { display:flex; gap:10px; padding:10px 2px;
  border-top:1px solid var(--line); }
.wall-row img { width:34px; height:34px; border-radius:50%;
  object-fit:cover; flex:none; }
.wall-row .wbody { flex:1; min-width:0; }
.wall-row .wmeta { color:var(--faint); font-size:.82em; display:flex;
  align-items:center; gap:6px; }
.wall-row .wmeta a { color:var(--text); font-weight:600; }
.wall-row .wtext { color:var(--muted); font-size:.95em; line-height:1.5;
  overflow-wrap:break-word; margin-top:2px; }
.wall-row .wdel { margin-left:auto; background:none; border:none;
  color:var(--faint); cursor:pointer; font-size:.9em; }
.wall-row .wdel:hover { color:#f87171; }

/* Bulletins board. */
.bull-card { padding:16px 18px; }
.bull-card .bsub { color:var(--text); font-weight:700; font-size:1.02em; }
.bull-card .bmeta { color:var(--faint); font-size:.82em; margin:4px 0 8px;
  display:flex; align-items:center; gap:6px; }
.bull-card .bmeta img { width:22px; height:22px; border-radius:50%;
  object-fit:cover; }
.bull-card .bbody { color:var(--muted); line-height:1.6;
  overflow-wrap:break-word; }

/* Invite links. */
.inv-row { display:flex; align-items:center; gap:12px; padding:12px 4px;
  border-top:1px solid var(--line); flex-wrap:wrap; }
.inv-url { flex:1; min-width:220px; font-family:ui-monospace, monospace;
  font-size:.85em; color:var(--teal); overflow-wrap:anywhere; }
.inv-stats { color:var(--faint); font-size:.85em; white-space:nowrap; }

/* Rail section headers — the 21-link rail grouped into a map. */
.rail-nav .rail-sec { color:var(--faint); font-size:.68em; font-weight:800;
  text-transform:uppercase; letter-spacing:.09em; padding:14px 14px 4px; }
.rail-nav .rail-sec:first-child { padding-top:6px; }
