/* ============================================================================
   REDVELVET FORUM — DESIGN SYSTEM v2 (bold brand statement)
   Deep velvet red chrome + near-black headers, high-contrast cards,
   ivory content canvas. All legacy class names remain styled (data tables,
   panels, post rows) so every page renders correctly while the bespoke
   card layouts layer on top.
   ============================================================================ */

:root {
    /* brand (sampled from the live redvelvet.co.za) */
    --rv-red:        #990000;   /* site surface red (navbar/btn-dark) */
    --rv-red-600:    #a80000;   /* content links */
    --rv-red-700:    #800000;   /* btn-dark:hover, deep accents */
    --rv-red-grad:   linear-gradient(135deg, #990000 0%, #660000 100%); /* exact site gradient */
    --rv-gold:       #c9a24b;   /* metal gold for borders/accents */
    --rv-gold-soft:  #ffcc99;   /* champagne gold — the site's text/heading tone */
    --rv-ink:        #16161a;
    --rv-ink-2:      #3d3d46;
    --rv-muted:      #6f6f7a;
    --rv-line:       #e6e1da;
    --rv-line-soft:  #f0ece6;
    --rv-canvas:     #fbf3ea;   /* warm ivory */
    --rv-card:       #ffffff;
    --rv-header:     #990000;   /* deep brand red chrome */
    --rv-header-2:   #660000;
    --rv-radius:     14px;
    --rv-radius-sm:  9px;
    --rv-shadow:     0 1px 2px rgba(20,10,10,.05), 0 6px 24px -8px rgba(60,10,10,.12);
    --rv-shadow-lg:  0 4px 10px rgba(20,10,10,.07), 0 18px 44px -14px rgba(60,10,10,.20);
    --rv-font: "Montserrat", "Segoe UI Variable Display", "Segoe UI", system-ui, -apple-system, Arial, sans-serif;
    --rv-serif: "Playfair Display", Georgia, "Times New Roman", serif;
}

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
    font-family: var(--rv-font);
    font-size: 15px; line-height: 1.55;
    color: var(--rv-ink);
    background:
        radial-gradient(1200px 380px at 50% -150px, rgba(255,0,0,.06), transparent 70%),
        radial-gradient(900px 300px at 100% 0, rgba(255,204,153,.18), transparent 60%),
        var(--rv-canvas);
    -webkit-font-smoothing: antialiased;
}
a { color: var(--rv-red-600); text-decoration: none; }
a:hover { text-decoration: underline; text-decoration-color: var(--rv-gold); }
img { max-width: 100%; }

/* ---------- top brand chrome ---------- */
.topheader { position: sticky; top: 0; z-index: 60; background: linear-gradient(to bottom, #CC0000, #9C0000); box-shadow: 0 2px 12px rgba(80,0,0,.35); border-bottom: 3px solid var(--rv-gold); }
.nav {
    max-width: 1180px; margin: 0 auto; display: flex; flex-wrap: wrap;
    padding: 0 16px; gap: 2px;
}
.nav a {
    color: #ffdcc2; padding: 13px 15px; font-size: 13px; font-weight: 600;
    text-transform: uppercase; letter-spacing: .8px; border-bottom: 3px solid transparent;
    transition: color .15s, border-color .15s, background .15s;
}
.nav a:hover { color: #ffcc99; background: rgba(0,0,0,.18); text-decoration: none; border-bottom-color: var(--rv-gold-soft); }

.header {
    max-width: 1180px; margin: 0 auto; padding: 18px 20px 0;
    display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap;
}
.brand { display: flex; align-items: center; gap: 14px; }
.brandlogo {
    height: 52px; width: auto; background: #fff; padding: 5px 12px;
    border-radius: 12px; box-shadow: var(--rv-shadow); border: 2px solid var(--rv-gold);
}
.brandtitle { font-family: var(--rv-serif); font-size: 27px; font-weight: 700; letter-spacing: .3px; line-height: 1.1; }
.brandtitle a { color: var(--rv-ink); }
.brandtitle a:hover { color: var(--rv-red-600); text-decoration: none; }
.brandtitle .rv-accent { color: var(--rv-red-700); }
.brandsub { font-size: 11.5px; color: #9c6b3f; letter-spacing: 2.6px; text-transform: uppercase; font-weight: 700; }

.userbox {
    display: flex; align-items: center; gap: 8px; background: #fff; border: 1px solid var(--rv-line);
    padding: 7px 8px 7px 14px; border-radius: 999px; box-shadow: var(--rv-shadow); font-size: 13.5px;
}
.userbox .userchip-avatar img { width: 30px; height: 30px; border-radius: 50%; object-fit: cover; }
.userboxlink { font-weight: 700; color: var(--rv-ink); }
.userboxlinks a {
    color: var(--rv-muted); padding: 5px 8px; border-radius: 999px; font-weight: 600;
    transition: color .15s, background .15s;
}
.userboxlinks a:hover { color: var(--rv-red-600); background: #fbeaea; text-decoration: none; }
.inboxlink img { vertical-align: -3px; }

/* guest chip (no login box — SSO site) */
.guestchip { color: #c9c6c0; font-size: 13px; }
.guestchip a { color: var(--rv-red-700); font-weight: 700; }
.guestchip a:hover { color: var(--rv-red-600); }

/* ---------- layout shell ---------- */
.forumcontent { max-width: 1180px; margin: 0 auto; padding: 22px 20px 60px; }
.footer {
    max-width: none; margin: 26px 0 0; padding: 26px 20%; border-top: 3px solid var(--rv-gold);
    background: linear-gradient(135deg, #990000, #660000);
    color: #ffd9b0; font-size: 13px; display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap;
}
.footer .f-brand { font-family: var(--rv-serif); font-weight: 700; color: var(--rv-gold-soft); letter-spacing: .6px; font-size: 15px; }

/* ---------- page heads / breadcrumbs ---------- */
.pagehead { display: flex; align-items: flex-end; justify-content: space-between; gap: 14px; flex-wrap: wrap; margin: 4px 0 18px; }
.pagehead h1 { margin: 0; font-family: var(--rv-serif); font-size: 30px; font-weight: 700; letter-spacing: -.2px; color: var(--rv-red-700); }
.pagehead .lead { color: var(--rv-muted); margin-top: 2px; }
.location { color: var(--rv-muted); font-size: 13.5px; margin: 2px 0 16px; display:flex; align-items:center; gap:6px; flex-wrap:wrap;}
.location a { font-weight: 600; }
.location .sep { color: #c9c2ba; }
.gray { color: var(--rv-muted); }
h2.groupname { font-family: var(--rv-serif); font-size: 19px; font-weight: 700; text-transform: none; letter-spacing: .2px; color: var(--rv-red-700); margin: 28px 0 12px; display:flex; align-items:center; gap:12px;}
h2.groupname::after { content:""; flex:1; height:2px; background: linear-gradient(90deg, transparent, var(--rv-gold-soft), var(--rv-gold), transparent); border-radius:2px; opacity:.9; }

/* ---------- cards / panels ---------- */
.panel, .roundedborder {
    background: var(--rv-card); border: 1px solid var(--rv-line); border-radius: var(--rv-radius);
    padding: 6px 18px; margin: 12px 0; box-shadow: var(--rv-shadow); overflow: hidden;
}
.panel.card-pad { padding: 18px 20px; }
.sectiontitle { font-family: var(--rv-serif); font-size: 19px; font-weight: 700; margin: 4px 0 12px; display:flex; align-items:center; gap:10px; color: var(--rv-red-700); }
.sectiontitle .ico { color: var(--rv-gold); }

/* ---------- data tables (admin + legacy lists, modernised) ---------- */
.forumtable { width: 100%; border-collapse: collapse; }
.forumtable thead th {
    text-align: left; font-size: 11.5px; text-transform: uppercase; letter-spacing: 1px;
    color: #9c6b3f; border-bottom: 2px solid var(--rv-gold); padding: 12px 10px; white-space: nowrap;
}
.forumtable td { padding: 11px 10px; border-bottom: 1px solid var(--rv-line-soft); vertical-align: middle; }
.forumtable tbody tr { transition: background .12s; }
.forumtable tbody tr:hover { background: #fff4e6; }
.forumtable tr.altItem td, .forumtable tbody tr:nth-child(even) td { background: #fdf7ee; }
.forumtable tbody tr:hover td { background: #fff4e6; }
.forumtable tr:last-child td { border-bottom: none; }
.forumtable input[type=text], .forumtable input[type=password], .forumtable select { width: 100%; min-width: 120px; }
.numcell { text-align: center; white-space: nowrap; }
.forumtitle { font-size: 15.5px; font-weight: 700; }
.forumdesc { color: var(--rv-muted); font-size: 13.5px; }
.latestcell { font-size: 13px; color: var(--rv-muted); }

/* ---------- HOME: forum card grid ---------- */
.fgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(330px, 1fr)); gap: 14px; margin: 4px 0 8px; }
.fcard {
    background: var(--rv-card); border: 1px solid var(--rv-line); border-radius: var(--rv-radius);
    padding: 16px 16px 12px; box-shadow: var(--rv-shadow); display: flex; flex-direction: column; gap: 8px;
    transition: transform .15s, box-shadow .15s, border-color .15s; position: relative; overflow: hidden;
}
.fcard::before { content:""; position:absolute; inset:0 0 auto 0; height:4px; background: linear-gradient(90deg, #ff3334, var(--rv-gold-soft) 55%, var(--rv-gold)); opacity:1; transition:opacity .2s;}
.fcard:hover { transform: translateY(-2px); box-shadow: var(--rv-shadow-lg); border-color: var(--rv-gold); }
.fcard:hover::before { opacity: 1; }
.fcard .f-top { display: flex; gap: 12px; align-items: flex-start; }
.fcard .f-ico img { width: 38px; height: 38px; border-radius: 9px; }
.fcard .f-title { font-family: var(--rv-serif); font-size: 18.5px; font-weight: 700; line-height: 1.25; }
.fcard .f-title a { color: var(--rv-ink); }
.fcard .f-title a:hover { color: var(--rv-red-600); text-decoration: none; }
.fcard .f-desc { color: var(--rv-muted); font-size: 13.5px; }
.fcard .f-meta { display: flex; gap: 14px; font-size: 12.5px; color: var(--rv-muted); border-top: 1px dashed var(--rv-line); padding-top: 9px; margin-top: 2px; }
.fcard .f-meta b { color: var(--rv-ink-2); }
.fcard .f-last { font-size: 12.5px; color: var(--rv-muted); }
.fcard .f-last a { font-weight: 600; }

/* ---------- stat strip (home) ---------- */
.statstrip { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px; margin: 16px 0; }
.statcard {
    background: linear-gradient(160deg, #fffdfa 0%, #fff3e2 100%); border: 1px solid #ecd7bd; border-radius: var(--rv-radius-sm);
    padding: 14px 16px; box-shadow: var(--rv-shadow); border-top: 3px solid var(--rv-gold);
}
.statcard .s-num { font-family: var(--rv-serif); font-size: 27px; font-weight: 700; color: var(--rv-red-700); line-height: 1.05; }
.statcard .s-label { font-size: 11px; text-transform: uppercase; letter-spacing: 1.4px; color: #9c6b3f; font-weight: 700; }

/* ---------- thread rows (topics/recent lists) ---------- */
.trow {
    display: flex; align-items: center; gap: 14px; padding: 13px 8px;
    border-bottom: 1px solid var(--rv-line-soft); transition: background .12s;
}
.trow:hover { background: #fff4e6; }
.trow:last-child { border-bottom: none; }
.trow .t-ico { flex: 0 0 34px; text-align: center; }
.trow .t-ico img { width: 30px; height: 30px; }
.trow .t-main { flex: 1; min-width: 0; overflow-wrap: anywhere; }
.trow .t-title { font-size: 15.5px; font-weight: 700; line-height: 1.3; }
.trow .t-title a { color: var(--rv-ink); overflow-wrap: anywhere; }
.trow .t-title a:hover { color: var(--rv-red-600); text-decoration: none; }
.trow .t-title .badge-flag { display:inline-block; font-size:10px; letter-spacing:.6px; text-transform:uppercase; font-weight:800; margin-left:6px; padding:1px 6px; border-radius:4px; vertical-align:2px;}
.badge-flag.sticky { background: var(--rv-gold-soft); color:#5a1e00; }
.badge-flag.closed { background:#eee; color:#666; }
.badge-flag.hidden { background:#5c0000; color:#ffcc99; }
.trow .t-sub { font-size: 12.5px; color: var(--rv-muted); display:flex; gap:10px; flex-wrap:wrap; margin-top:3px;}
.trow .t-sub b { color: var(--rv-ink-2); }
.trow .t-side { flex: 0 0 auto; text-align: right; font-size: 12.5px; color: var(--rv-muted); line-height: 1.6; }
.trow .t-side .lastby { display:block; }
.trow .t-nums { display:flex; gap:12px; font-size:12px; color:var(--rv-muted); }
.trow .t-nums b { font-size:15px; color: var(--rv-ink); display:block; line-height:1.1; text-align:center; }
.trow .t-actions { font-size: 12px; }

/* author cell in list rows (recent posts / search results / view-posts-by-user) */
.t-author { flex: 0 0 150px; min-width: 0; text-align: center; font-size: 12.5px; color: var(--rv-muted); }
.t-author .avatar { width: 64px; height: 64px; object-fit: cover; }
.t-author .authorname { font-weight: 700; font-size: 14px; margin-top: 5px; word-break: break-word; }
.t-author .authorname a { color: var(--rv-ink); }
.t-author .authormeta { font-size: 11.5px; color: var(--rv-muted); margin-top: 2px; }

/* ---------- POST cards (messages) ---------- */
.postcard { display: flex; gap: 0; border-bottom: 1px solid var(--rv-line-soft); }
.postcard:last-child { border-bottom: none; }
.postcard .authorrail {
    flex: 0 0 210px; padding: 18px 14px; text-align: center;
    background: linear-gradient(180deg, #fff7ec, #fbeedb); border-right: 1px solid #f0dcc0;
}
.postcard .authorrail .avatar { width: 84px; height: 84px; border-radius: 50%; object-fit: cover; border: 3px solid #fff; box-shadow: var(--rv-shadow); }
.postcard .authorrail .authorname { font-family: var(--rv-serif); font-weight: 700; margin-top: 9px; font-size: 16.5px; word-break: break-word; }
.postcard .authorrail .authorname a { color: var(--rv-ink); }
.postcard .authorrail .role-tag { display:inline-block; margin-top:4px; font-size:10px; letter-spacing:.8px; text-transform:uppercase; font-weight:800; padding:2px 8px; border-radius:999px; }
.role-tag.admin { background: var(--rv-red-grad); color:#fff; }
.role-tag.mod { background:#5c0000; color:var(--rv-gold-soft); }
.postcard .authorrail .authormeta { font-size: 11.5px; color: var(--rv-muted); margin-top: 6px; line-height: 1.7; }
.postcard .postmain { flex: 1; min-width: 0; padding: 16px 20px; }
.postcard .posthead { display: flex; justify-content: space-between; gap: 10px; flex-wrap: wrap; font-size: 12px; color: var(--rv-muted); margin-bottom: 8px; }
.postcard .postnum { font-weight: 800; color:#7a4a12; background:#fff1dd; border:1px solid #ecd7bd; border-radius: 999px; padding: 1px 10px; }
.postcard .postbody { font-size: 15px; overflow-wrap: break-word; }
.postcard .postbody img.postimg { border-radius: 8px; }
.postcard .signature { border-top: 1px dashed var(--rv-line); margin-top: 14px; padding-top: 8px; color: #8a8a94; font-size: 12.5px; }
.postcard .postfoot { display: flex; justify-content: space-between; align-items: center; gap: 10px; margin-top: 12px; flex-wrap: wrap; }
.postcard .postactions { font-size: 13px; display: flex; gap: 4px; flex-wrap: wrap; }
.postcard .postactions a, .postcard .postactions .act {
    color: var(--rv-muted); padding: 4px 9px; border-radius: 7px; font-weight: 600;
    transition: color .12s, background .12s; border: 0; background: none; cursor: pointer; font-size: 13px;
}
.postcard .postactions a:hover, .postcard .postactions .act:hover { color: var(--rv-red-600); background: #fdeceb; text-decoration: none; }
.ratingbox { display: inline-flex; align-items: center; gap: 6px; font-weight: 700; }
.ratingbox .up, .ratingbox .down { color: var(--rv-muted); cursor: pointer; padding: 2px 6px; border-radius: 6px; }
.ratingbox .up:hover { color: #0a7d33; background:#e8f6ec; }
.ratingbox .down:hover { color: var(--rv-red-600); background:#fdeceb; }
.ratingval.pos { color: #0a7d33; } .ratingval.neg { color: var(--rv-red-600); }
.answer-badge { display:inline-block; background:#0a7d33; color:#fff; font-size:11px; font-weight:800; border-radius:999px; padding:1px 9px; margin-left:6px; }

/* quoted/code content */
.quote { border-left: 3px solid var(--rv-gold); background: #fff8ec; padding: 10px 14px; margin: 10px 0; border-radius: 0 10px 10px 0; }
.quotecite { font-size: 12px; font-weight: 700; color:#9c6b3f; margin-bottom: 4px; }
pre.code { background: #1d1d22; color: #ececec; padding: 12px 14px; border-radius: 10px; overflow-x: auto; font-size: 13px; white-space: pre-wrap; }
.smiley { vertical-align: middle; border: 0; }

/* ---------- member cards (users) ---------- */
.ucard {
    display:flex; align-items:center; gap:14px; padding:12px; background:var(--rv-card);
    border:1px solid var(--rv-line); border-radius:var(--rv-radius-sm); box-shadow:var(--rv-shadow);
    transition: transform .12s, box-shadow .12s;
}
.ucard:hover { transform: translateY(-1px); box-shadow: var(--rv-shadow-lg); }
.ucard .u-avatar img { width: 52px; height: 52px; border-radius: 50%; object-fit: cover; }
.ucard .u-name { font-weight: 800; }
.ucard .u-meta { font-size: 12px; color: var(--rv-muted); }

/* ---------- buttons / forms ---------- */
.btn, .gradientbutton, button.btn {
    display: inline-flex; align-items: center; gap: 6px; background: var(--rv-red-grad); color: var(--rv-gold-soft) !important;
    border: 1px solid #5c0000; border-radius: 7px; padding: 9px 20px; font-size: 13.5px; font-weight: 700; font-family: inherit;
    letter-spacing: .4px; cursor: pointer; box-shadow: 0 2px 6px rgba(90,0,0,.3); transition: filter .15s, transform .1s, box-shadow .15s, border-color .15s;
    text-decoration: none !important;
}
.btn:hover { filter: brightness(1.14); border-color: var(--rv-gold); box-shadow: 0 4px 12px rgba(90,0,0,.38); }
.btn:active { transform: translateY(1px); }
.btn.ghost { background:#fff; color: var(--rv-red-700) !important; border:1px solid #d9b98e; box-shadow:none; }
.btn.ghost:hover { background:#fff3e2; border-color: var(--rv-gold); }
.btn.dark { background:#4a0000; box-shadow:none; }
.btn.danger { background:#5c0000; box-shadow:none; }
input[type=text], input[type=password], input[type=email], input[type=search], input[type=date], textarea, select {
    border: 1.5px solid #d5cdc4; border-radius: 9px; padding: 9px 12px; font-family: inherit; font-size: 14.5px;
    background: #fff; max-width: 100%; color: var(--rv-ink); transition: border-color .15s, box-shadow .15s;
}
input:focus, textarea:focus, select:focus { outline: none; border-color: var(--rv-gold); box-shadow: 0 0 0 3px rgba(201,162,75,.25); }
textarea { line-height: 1.5; }
label { font-weight: 600; font-size: 14px; }

/* ---------- editor (compose) ---------- */
.posteditor { border: 1px solid var(--rv-line); border-radius: var(--rv-radius); overflow: hidden; box-shadow: var(--rv-shadow); background:#fff;}
.ebar { display: flex; flex-wrap: wrap; gap: 3px; padding: 7px; background: #fdf1e3; border-bottom: 1px solid #ecd7bd; }
.ebar button { border: 1px solid transparent; background: transparent; border-radius: 7px; padding: 5px 11px; cursor: pointer; font-size: 13px; font-weight: 700; color: var(--rv-red-700); transition: background .12s, color .12s; }
.ebar button:hover { background: #fff; color: #5c0000; border-color: var(--rv-gold); }
.ebar .sep { width: 1px; background: var(--rv-line); margin: 2px 3px; }
.posteditor textarea { width: 100%; border: 0; border-radius: 0; min-height: 190px; resize: vertical; box-shadow: none; }
.posteditor textarea:focus { box-shadow: inset 0 0 0 3px rgba(192,16,28,.10); }
.postpreview { border: 1.5px dashed #d8b8b4; background: #fffdfb; padding: 14px; margin-top: 12px; border-radius: 10px; display: none; }

/* ---------- notices / alerts ---------- */
.notice { background: #eef7ee; border: 1px solid #bfe0bf; color: #1c5c1c; border-radius: 10px; padding: 12px 16px; margin: 12px 0; }
.notice.error, .error { background: #fdeceb; border-color: #eab9b4; color: #8a0a10; }
.error { font-weight: 600; }
.notice.info { background:#eef3fb; border-color:#c3d4ee; color:#24466f; }

/* ---------- misc bits ---------- */
.pager { display:flex; align-items:center; gap:2px; flex-wrap:wrap; padding: 12px 4px; font-size: 13.5px; }
.pager a, .pager b { padding: 4px 10px; border-radius: 7px; }
.pager a { color: var(--rv-ink-2); font-weight:600; }
.pager a:hover { background:#fff3e2; color:var(--rv-red-700); text-decoration:none; }
.pager b { background: var(--rv-red-grad); color: var(--rv-gold-soft); border:1px solid #5c0000; }
.avatar { border-radius: 50%; }
.chip { display:inline-flex; align-items:center; gap:6px; background:#fffdf9; border:1px solid #e8cfa8; border-radius:999px; padding:4px 12px; font-size:12.5px; font-weight:600; color:#7a4a12; }
.chip.red { background:#fdeceb; border-color:#ecc; color:var(--rv-red-700); }
.newpm { background: var(--rv-gold-soft); color:#5a1e00; font-weight:800; font-size:10.5px; letter-spacing:.5px; padding:1px 8px; border-radius:999px; border:1px solid var(--rv-gold); }
.rsslink img { opacity:.75; transition:opacity .15s; } .rsslink:hover img { opacity:1; }
.attachmentlist { display:flex; flex-direction:column; gap:4px; font-size:13px; margin-top:8px; }
.attachmentlist img.thumb { max-height:140px; border-radius:8px; margin-top:4px; box-shadow: var(--rv-shadow); }
.pmbody { padding: 2px 4px 6px; }
.datepick { width: 130px; }

/* admin dashboard */
.icongrid { display:grid; grid-template-columns: repeat(auto-fill, minmax(230px,1fr)); gap:12px; }
.icongrid a {
    display:flex; align-items:center; gap:12px; background:#fff; border:1px solid var(--rv-line);
    border-radius: var(--rv-radius-sm); padding:14px 16px; font-weight:700; color:var(--rv-ink);
    box-shadow: var(--rv-shadow); transition: transform .12s, border-color .12s;
}
.icongrid a:hover { transform: translateY(-1px); border-color: var(--rv-gold); text-decoration:none; color: var(--rv-red-700);}
.icongrid a .gi { width:38px; height:38px; border-radius:9px; background: var(--rv-red-grad); color:#fff; display:flex; align-items:center; justify-content:center; font-size:17px; font-weight:800; }

/* hub lists on users page */
.hubline { display:flex; flex-wrap:wrap; gap: 6px 14px; padding: 4px 0 10px; }
.hubline a { font-weight:600; }

/* watch bar */
.watchbar { display:flex; gap:8px; flex-wrap:wrap; align-items:center; font-size:13px; color:var(--rv-muted); margin: 6px 0 2px; }

/* ============ responsive ============ */
@media (max-width: 900px) {
    .postcard .authorrail { flex-basis: 150px; }
}
@media (max-width: 768px) {
    .forumcontent { padding: 14px 10px 40px; }
    .header { padding: 12px 12px 0; }
    .nav { padding: 0 6px; }
    .nav a { padding: 11px 10px; font-size: 12px; letter-spacing: .4px; }
    .brandtitle { font-size: 19px; }
    .brandlogo { height: 42px; }
    .fgrid { grid-template-columns: 1fr; }
    .statstrip { grid-template-columns: repeat(2, 1fr); }
    .trow { flex-wrap: wrap; gap: 8px 12px; }
    .trow .t-side { text-align: left; flex-basis: 100%; padding-left: 48px; }
    /* author rows (recent posts / search results): stack author above full-width text */
    .trow-author { flex-direction: column; align-items: stretch; gap: 6px; }
    .t-author { flex: none; width: 100%; text-align: left; }
    .t-author .postauthor { display: flex; align-items: center; gap: 9px; flex-wrap: wrap; }
    .t-author .avatar { width: 38px; height: 38px; }
    .t-author .authorname { margin-top: 0; font-size: 13.5px; }
    .t-author .authormeta { margin-top: 0; }
    .postcard { flex-direction: column; }
    .postcard .authorrail { flex: none; display:flex; align-items:center; gap:12px; text-align:left; padding: 12px 14px; border-right:0; border-bottom:1px solid var(--rv-line-soft); }
    .postcard .authorrail .avatar { width: 52px; height: 52px; }
    .postcard .authorrail .authormeta { margin-top: 0; }
    .forumtable thead { display: none; }
    .forumtable td { display: block; border-bottom: 1px solid var(--rv-line-soft); }
    .userbox { padding: 5px 6px 5px 10px; }
}
@media (max-width: 420px) {
    .statstrip { grid-template-columns: 1fr 1fr; gap: 8px; }
    .btn { padding: 8px 14px; }
}
