:root {
  --bg:#121014; --card:#1d1a21; --card2:#26222c; --line:#37313f;
  --text:#f2edf3; --muted:#b8aebd; --accent:#c22755; --accent2:#e04a73;
  --ok:#3cb371; --danger:#e5484d; --radius:14px;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body {
  margin:0; background:var(--bg);
  color:var(--text); font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Noto Sans",sans-serif;
  line-height:1.5; font-size:16px;
}
a {
  color:var(--accent2); text-decoration:none;
}
a:hover{text-decoration:underline}
img {
  max-width:100%; display:block;
}
.container {
  max-width:1080px; margin:0 auto; padding:16px;
}
.site-header {
  background:#0d0b0f; border-bottom:1px solid var(--line); padding:10px 16px;
}
.header-inner {
  display:flex; flex-wrap:wrap; gap:10px; align-items:center;
  justify-content:space-between; max-width:1080px; margin:0 auto;
}
.brand {
  font-weight:800; letter-spacing:.14em; color:var(--text); font-size:20px;
}
.brand:hover {
  text-decoration:none; color:var(--accent2);
}
.main-nav {
  display:flex; flex-wrap:wrap; gap:14px;
}
.main-nav a {
  color:var(--text); font-size:15px;
}
.main-nav a.active,.admin-nav a.active {
  color:var(--accent2); font-weight:700;
}
.header-right {
  display:flex; flex-wrap:wrap; gap:12px; align-items:center;
  font-size:14px;
}
.lang-switch a{color:var(--muted)}
.nav-user{font-weight:600}
.age-gate {
  font-size:12px; color:var(--muted); text-align:center; margin:8px auto 0;
  max-width:1080px;
}
.pager {
  display:flex; flex-wrap:wrap; gap:8px; align-items:center; justify-content:center;
  margin:24px 0 8px;
}
.pager-link,.pager-current {
  padding:6px 12px; border:1px solid var(--line); border-radius:8px;
  background:var(--card); color:var(--text); font-size:14px;
}
.pager-link:hover { text-decoration:none; border-color:var(--accent2); color:var(--accent2); }
.pager-current { background:var(--accent); border-color:var(--accent); font-weight:700; }
.pager-info { color:var(--muted); font-size:13px; margin-left:6px; }
h1 {
  font-size:26px; margin:10px 0 14px;
}
h2 {
  font-size:20px; margin:8px 0 10px;
}
h3 {
  font-size:17px; margin:8px 0;
}
.box {
  background:var(--card); border:1px solid var(--line); border-radius:var(--radius); padding:16px;
  margin:0 0 16px;
}
.empty {
  color:var(--muted); text-align:center; padding:32px 0;
}
.error {
  background:#3a1622; border:1px solid var(--danger); color:#ffd7da; padding:10px 12px;
  border-radius:10px; margin:0 0 12px;
}
.success{color:var(--ok)}
.notice{color:#ffb3c1}
.mono {
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace; word-break:break-all; font-size:13px;
}
.sr-only {
  position:absolute; width:1px; height:1px; overflow:hidden;
  clip:rect(0 0 0 0);
}
/* buttons & forms */
.btn {
  display:inline-block; background:var(--card2); color:var(--text); border:1px solid var(--line);
  border-radius:999px; padding:9px 18px; font-size:15px; cursor:pointer;
}
.btn:hover {
  text-decoration:none; border-color:var(--accent);
}
.btn-primary {
  background:var(--accent); border-color:var(--accent); color:#fff;
}
.btn-primary:hover{background:var(--accent2)}
.btn-ghost{background:transparent}
.btn-sm {
  padding:5px 12px; font-size:13px;
}
.btn-danger {
  background:var(--danger); border-color:var(--danger); color:#fff;
}
.inline-form{display:inline}
form label {
  display:block; margin:0 0 12px; font-size:14px; color:var(--muted);
}
form label.check {
  display:flex; gap:8px; align-items:flex-start; color:var(--text);
}
input[type=text],input[type=email],input[type=password],input[type=date],input[type=search],select,textarea {
  width:100%; margin-top:4px; background:#141118; color:var(--text);
  border:1px solid var(--line); border-radius:10px; padding:10px 12px; font-size:16px;
  font-family:inherit;
}
textarea{resize:vertical}
input[type=file] {
  margin-top:6px; color:var(--text);
}
input[type=checkbox] {
  width:18px; height:18px; accent-color:var(--accent); flex:none;
  margin-top:2px;
}
:focus-visible {
  outline:2px solid var(--accent2); outline-offset:2px;
}
/* search */
.search-box {
  background:var(--card); border:1px solid var(--line); border-radius:var(--radius); padding:14px;
  margin-bottom:16px;
}
.search-form {
  display:grid; grid-template-columns:1fr 1fr; gap:10px; align-items:end;
}
.search-form label{margin:0}
.search-form .btn{width:100%}
/* profile grid */
.grid {
  display:grid; grid-template-columns:1fr; gap:14px;
}
.profile-card {
  background:var(--card); border:1px solid var(--line); border-radius:var(--radius); overflow:hidden;
}
.card-link {
  color:var(--text); display:block;
}
.card-link:hover{text-decoration:none}
.card-avatar {
  width:100%; aspect-ratio:1/1; object-fit:cover; background:var(--card2);
}
.avatar-placeholder {
  display:flex; align-items:center; justify-content:center; font-size:56px;
  font-weight:700; color:var(--accent2);
}
.card-body{padding:12px 14px 14px}
.card-name {
  margin:0 0 6px; font-size:18px;
}
.card-meta {
  display:flex; gap:8px; align-items:center; flex-wrap:wrap;
  margin:0 0 4px; font-size:14px; color:var(--muted);
}
.card-loc {
  margin:0 0 6px; color:var(--muted); font-size:14px;
}
.badge {
  display:inline-block; font-size:11px; font-weight:700; letter-spacing:.03em;
  padding:2px 8px; border-radius:999px; vertical-align:middle;
}
.badge-role {
  background:var(--accent); color:#fff; text-transform:none;
}
.badge-verified {
  background:#173d2a; color:#7ee2a8; border:1px solid var(--ok);
}
.badge-unread {
  background:var(--accent); color:#fff;
}
.bio {
  margin:0; color:var(--muted); font-size:14px;
}
.clamp {
  display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden;
}
.bio-full {
  white-space:pre-wrap; word-break:break-word;
}
/* profile page */
.profile-head {
  display:flex; gap:16px; align-items:center; margin-bottom:16px;
  flex-wrap:wrap;
}
.profile-avatar {
  width:148px; height:148px; border-radius:50%; object-fit:cover;
  background:var(--card2); flex:none;
}
.profile-head .avatar-placeholder{font-size:52px}
.profile-head-info h1{margin:0 0 6px}
.details {
  margin-top:14px; border-top:1px solid var(--line);
}
.detail-row {
  display:flex; gap:12px; padding:8px 0; border-bottom:1px solid var(--line);
  font-size:14px;
}
.detail-label {
  flex:0 0 110px; color:var(--muted); font-weight:600;
}
.detail-value{word-break:break-word}
.post {
  background:var(--card); border:1px solid var(--line); border-radius:var(--radius); padding:14px;
  margin:0 0 12px;
}
.post-text {
  white-space:pre-wrap; word-break:break-word; margin:0 0 8px;
}
.post-image {
  border-radius:10px; width:100%;
}
.post-date,.post time {
  color:var(--muted); font-size:12px;
}
.paywall-box{border-color:var(--accent)}
.actions-box {
  display:flex; flex-wrap:wrap; gap:14px; align-items:flex-start;
}
.report-form {
  display:flex; gap:8px; align-items:end; flex-wrap:wrap;
}
.report-form label{margin:0}
/* auth */
.auth-box {
  max-width:460px; margin:24px auto;
}
.auth-box .btn{width:100%}
/* conversations & chat */
.conv-list {
  list-style:none; margin:0; padding:0;
}
.conv-item{border-bottom:1px solid var(--line)}
.conv-link {
  display:flex; gap:12px; align-items:center; padding:12px 4px;
  color:var(--text);
}
.conv-link:hover {
  text-decoration:none; background:var(--card);
}
.conv-avatar {
  width:52px; height:52px; border-radius:50%; object-fit:cover;
  background:var(--card2); flex:none;
}
.conv-avatar.avatar-placeholder{font-size:22px}
.conv-main {
  flex:1; min-width:0; display:flex; flex-direction:column;
}
.conv-name{font-weight:700}
.conv-last {
  color:var(--muted); font-size:14px; white-space:nowrap; overflow:hidden;
  text-overflow:ellipsis;
}
.conv-time {
  color:var(--muted); font-size:12px; flex:none;
}
.chat-head{margin-bottom:12px}
.chat-head a {
  display:inline-flex; gap:10px; align-items:center; color:var(--text);
}
.chat-log {
  display:flex; flex-direction:column; gap:8px; padding:8px 0 16px;
}
.bubble {
  max-width:82%; padding:10px 14px; border-radius:16px; background:var(--card2);
  align-self:flex-start;
}
.bubble p {
  margin:0; white-space:pre-wrap; word-break:break-word;
}
.bubble time {
  display:block; font-size:11px; color:var(--muted); margin-top:4px;
}
.bubble.mine {
  background:var(--accent); color:#fff; align-self:flex-end;
}
.bubble.mine time{color:#ffd7e1}
.chat-form {
  display:flex; gap:8px; align-items:flex-end; position:sticky;
  bottom:0; background:var(--bg); padding:10px 0;
}
.chat-form textarea {
  flex:1; margin:0;
}
/* membership */
.price {
  font-size:28px; font-weight:800; color:var(--accent2);
}
.order-card .address {
  cursor:pointer; background:#141118; border:1px dashed var(--line); border-radius:8px;
  padding:8px;
}
.txid-form{margin-top:10px}
/* admin */
.admin-nav {
  display:flex; flex-wrap:wrap; gap:12px; margin:0 0 16px;
  padding:10px 0; border-bottom:1px solid var(--line);
}
.admin-nav a{color:var(--text)}
.stats {
  display:grid; grid-template-columns:1fr 1fr; gap:12px;
}
.stat-card {
  background:var(--card); border:1px solid var(--line); border-radius:var(--radius); padding:18px;
  text-align:center;
}
.stat-card strong {
  display:block; font-size:30px; color:var(--accent2);
}
.stat-card span {
  color:var(--muted); font-size:13px;
}
.table-wrap{overflow-x:auto}
.admin-table {
  width:100%; border-collapse:collapse; font-size:13px; background:var(--card);
}
.admin-table th,.admin-table td {
  border:1px solid var(--line); padding:7px 8px; text-align:left; vertical-align:top;
  word-break:break-word;
}
.admin-table th{background:var(--card2)}
/* toast */
.toast {
  position:fixed; left:50%; bottom:22px; transform:translateX(-50%);
  background:#2b2531; border:1px solid var(--accent); color:var(--text); padding:11px 18px;
  border-radius:999px; z-index:99; max-width:92vw; text-align:center;
  font-size:14px; box-shadow:0 8px 28px rgba(0,0,0,.5);
}
.account-line{color:var(--muted)}
@media(min-width:640px){
.grid{grid-template-columns:repeat(2,1fr)}
.search-form{grid-template-columns:repeat(3,1fr)}
.search-form .btn{width:auto}
.stats{grid-template-columns:repeat(4,1fr)}
.bubble{max-width:68%}
}
@media(min-width:960px){
.grid{grid-template-columns:repeat(3,1fr)}
.container{padding:22px}
}

/* DM buttons */
.card-actions{padding:0 14px 14px;display:flex;justify-content:flex-end}
.dm-btn{display:inline-flex;align-items:center;gap:4px}
.dm-btn[disabled]{opacity:.5;cursor:not-allowed}
.profile-dm{margin-top:10px}
.profile-dm summary{list-style:none;display:inline-flex;cursor:pointer}
.profile-dm summary::-webkit-details-marker{display:none}
.dm-compose[open] .dm-form,.dm-compose[open] .dm-paywall{margin-top:10px}
.dm-hint{font-size:.85em;opacity:.75;margin:6px 0 0}
@media (max-width:600px){.profile-dm .dm-btn{width:100%;justify-content:center}}

/* dm modal + checkout */
.dm-modal{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center}
.dm-modal[hidden]{display:none}
.dm-modal-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.6)}
.dm-modal-box{position:relative;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:22px;max-width:380px;width:calc(100% - 32px);text-align:center}
.dm-modal-x{position:absolute;top:6px;right:10px;background:none;border:0;color:inherit;font-size:24px;cursor:pointer}
.dm-modal-price{font-size:1.15em;margin:10px 0}
.dm-form[hidden]{display:none}.dm-form{margin-top:10px}
.pay-grid{display:flex;gap:18px;flex-wrap:wrap;align-items:flex-start}
.pay-qr{background:#fff;padding:8px;border-radius:8px;text-align:center;color:#000}
.pay-qr img{display:block;width:180px;height:180px}
.pay-info{flex:1;min-width:240px}
.pay-addr .mono,.pay-amount .mono{word-break:break-all;font-size:1.05em}
.pay-amount .mono{font-weight:bold;font-size:1.25em}
.pay-warn{color:#ffb454;font-size:.9em}
.pay-pending{color:#ffb454;font-weight:bold}
.pay-steps{padding-left:20px;line-height:1.7}
