body{ background:var(--bg); color:var(--text); }

/* ====== BLOGS INDEX (lista) ====== */
.blogs-page{
  margin-top:14px;
  max-width:1200px;
  margin-left:auto;
  margin-right:auto;
}
.blogs-top{
  display:flex;
  align-items:flex-end;
  justify-content:space-between;
  gap:12px;
  padding:6px 2px;
}
.blogs-top h1{ margin:0; font-size:26px; letter-spacing:.4px; font-weight:950; }

.blogs-grid{
  margin-top:14px;
  display:grid;
  grid-template-columns: minmax(420px, 1fr) minmax(420px, 1fr);
  gap:16px;
  align-items:start;
}
@media (max-width: 980px){
  .blogs-grid{ grid-template-columns:1fr; }
}

.panel{
  border:1px solid rgba(255,255,255,.10);
  background:
    radial-gradient(1200px 420px at 10% 0%, rgba(130,90,255,.12), transparent 55%),
    radial-gradient(900px 360px at 100% 20%, rgba(0,180,255,.10), transparent 52%),
    rgba(255,255,255,.03);
  border-radius:18px;
  padding:14px;
  box-shadow: 0 10px 30px rgba(0,0,0,.20);
}
.panel-head{ display:flex; align-items:baseline; justify-content:space-between; gap:10px; margin-bottom:12px; }
.panel-title{ font-weight:950; letter-spacing:.3px; }
.panel-sub{ opacity:.72; font-size:13px; }

.blog-list{ display:flex; flex-direction:column; gap:12px; }

.blog-row{
  display:flex;
  align-items:stretch;
  justify-content:space-between;
  gap:12px;
  border:1px solid rgba(255,255,255,.10);
  background:rgba(255,255,255,.02);
  border-radius:18px;
  padding:12px;
  cursor:pointer;
}
.blog-row:hover{ background:rgba(255,255,255,.05); border-color:rgba(255,255,255,.16); }

.blog-row-left{ display:flex; flex:1; min-width:0; }
.blog-row-head{ display:flex; gap:12px; min-width:0; flex:1; }

.tbox{ min-width:0; flex:1; }
.blog-row-title{
  font-weight:900;
  font-size:18px;
  line-height:1.15;
  margin-top:2px;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.blog-row-meta{
  margin-top:6px;
  display:flex;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
  opacity:.92;
}
.blog-user{ font-weight:800; }
.dot{ opacity:.55; }
.blog-snippet{
  margin-top:8px;
  opacity:.9;
  line-height:1.35;
  min-height: calc(1.35em * 2);
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
}

/* Coluna TOP: mais espaço e texto mais legível */
.col-top .blog-row-title{
  white-space:normal;
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
}
.col-top .blog-snippet{ -webkit-line-clamp:3; }

/* Coluna NOVOS: cards um pouco mais compactos */
.col-latest .avatar-rect{ width:60px; height:80px; }

.blog-row-right{
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  justify-content:flex-start;
  gap:8px;
  min-width:96px;
}
.score{
  display:inline-flex;
  align-items:center;
  gap:8px;
  font-weight:900;
  border:1px solid rgba(255,255,255,.12);
  background:rgba(0,0,0,.18);
  padding:6px 10px;
  border-radius:999px;
}

/* ====== Voto (+ / -) ====== */
.vote-row{ display:flex; gap:8px; }
.vote{
  width:34px;
  height:34px;
  border-radius:999px;
  border:1px solid rgba(255,255,255,.14);
  background:rgba(255,255,255,.04);
  color:#fff;
  cursor:pointer;
  font-weight:900;
}
.vote:hover{ background:rgba(255,255,255,.08); }
.vote:disabled{ opacity:.5; cursor:default; }

/* cores s¨®lidas (verde/vermelho) */
.vote.plus{ background:#1f8f3a; border-color:#1f8f3a; }
.vote.minus{ background:#b71c1c; border-color:#b71c1c; }
.vote.plus:hover{ filter:brightness(1.06); background:#1f8f3a; }
.vote.minus:hover{ filter:brightness(1.06); background:#b71c1c; }

/* ====== BLOG VIEW ====== */
.blog-view{ display:flex; flex-direction:column; gap:14px; margin-top:14px; }
.blog-card{
  border:1px solid rgba(255,255,255,.10);
  background:rgba(255,255,255,.03);
  border-radius:18px;
  padding:12px;
}
.blog-head{
  display:flex;
  justify-content:space-between;
  gap:14px;
  align-items:flex-start;
}
.blog-head-left{ display:flex; gap:12px; align-items:flex-start; min-width:0; }
.blog-title{ font-size:22px; font-weight:950; line-height:1.15; margin-top:2px; }
.byline{ display:inline-flex; align-items:center; gap:10px; flex-wrap:wrap; }
.byline .dot{ opacity:.55; }
.byline-big{ margin-top:6px; }

.blog-scorebox{
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  gap:8px;
}
.blog-body{ margin-top:12px; line-height:1.55; opacity:.96; }

.comments-card{
  border:1px solid rgba(255,255,255,.10);
  background:rgba(255,255,255,.03);
  border-radius:18px;
  padding:12px;
}

.comment-form .ta{
  width:100%;
  border-radius:12px;
  border:1px solid rgba(255,255,255,.12);
  background:rgba(0,0,0,.25);
  color:#fff;
  padding:10px;
  outline:none;
  resize:vertical;
}
.comment-form .row{ margin-top:8px; display:flex; justify-content:flex-end; gap:10px; }
.muted{ opacity:.72; }
.tiny{ font-size:12px; }

.comments{ margin-top:12px; display:flex; flex-direction:column; gap:12px; }

.comment{
  border:1px solid rgba(255,255,255,.10);
  background:rgba(0,0,0,.14);
  border-radius:16px;
  padding:10px;
}
.comment.reply{
  margin-left:34px;
  border-left:3px solid rgba(255,255,255,.10);
  padding-left:12px;
}

.reply-badge{
  display:inline-flex;
  align-items:center;
  font-size:11px;
  font-weight:900;
  letter-spacing:.3px;
  padding:3px 8px;
  border-radius:999px;
  border:1px solid rgba(255,255,255,.14);
  background:rgba(255,255,255,.06);
}

.comment-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
}
.comment-meta{ display:flex; gap:10px; align-items:flex-start; min-width:0; }
.meta-lines{ min-width:0; }
.line1{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }

.comment-actions{
  display:flex;
  align-items:center;
  gap:8px;
  flex:0 0 auto;
}

.like-pill{
  display:inline-flex;
  align-items:center;
  gap:8px;
  font-weight:950;
  border:1px solid rgba(255,255,255,.12);
  background:rgba(0,0,0,.18);
  padding:6px 10px;
  border-radius:999px;
  color:#fff;
  cursor:pointer;
}
.like-pill:hover{ background:rgba(0,0,0,.26); }

.like-btn{
  width:34px;
  height:34px;
  border-radius:999px;
  border:1px solid rgba(255,255,255,.14);
  background:rgba(255,255,255,.04);
  color:#fff;
  cursor:pointer;
  font-weight:950;
}
.like-btn:hover{ background:rgba(255,255,255,.08); }
.like-btn:disabled{ opacity:.45; cursor:default; }
.cscore{
  display:inline-flex;
  align-items:center;
  gap:8px;
  font-weight:900;
  border:1px solid rgba(255,255,255,.12);
  background:rgba(0,0,0,.18);
  padding:6px 10px;
  border-radius:999px;
}

.cbtn{
  border:1px solid rgba(255,255,255,.12);
  background:rgba(255,255,255,.04);
  color:#fff;
  padding:6px 10px;
  border-radius:999px;
  cursor:pointer;
  font-weight:900;
}
.cbtn:hover{ background:rgba(255,255,255,.07); }
.comment-body{ margin-top:8px; line-height:1.45; }
.replybox{ margin-top:10px; }

.comment-foot{
  margin-top:8px;
  display:flex;
  align-items:center;
  gap:12px;
}

.linkbtn{
  border:none;
  background:transparent;
  color:rgba(255,255,255,.86);
  cursor:pointer;
  padding:0;
  font-weight:900;
}
.linkbtn:hover{ text-decoration:underline; }

.comment.collapsed .children{
  display:none;
}

/* Modal: curtidas */
.likes-list{ margin-top:8px; display:flex; flex-direction:column; gap:8px; }
.like-user{
  display:flex;
  align-items:center;
  gap:10px;
  padding:10px;
  border-radius:14px;
  border:1px solid rgba(255,255,255,.10);
  background:rgba(0,0,0,.14);
  text-decoration:none;
  color:#fff;
}
.like-user:hover{ background:rgba(255,255,255,.04); }
.like-name{ line-height:1.2; }

/* ====== AVATAR RECT (IMPORTANTE) ====== */
.avatar-rect{
  width:64px;
  height:84px;
  border-radius:14px;
  border:1px solid rgba(255,255,255,.12);
  background:rgba(255,255,255,.03);
  overflow:hidden;
  display:flex;
  align-items:center;
  justify-content:center;
  flex:0 0 auto;
  position:relative;
}
.avatar-rect img{ width:100%; height:100%; object-fit:cover; position:absolute; inset:0; }
.avatar-rect img{ pointer-events:none; }

.avatar-rect.big{ width:92px; height:120px; border-radius:16px; }
.avatar-rect.small{ width:52px; height:68px; border-radius:14px; }

/* crop exato do avatar (base 240x470) */
.avatar-rect img,
.avatar-rect canvas{
  transform-origin: top left;
  transform: scale(0.4421) translate(-50px, -10px);
}

/* POST (BIG): também mais pra esquerda */
.avatar-rect.big img,
.avatar-rect.big canvas{
  transform-origin: top left;
  transform: scale(0.6316) translate(-45px, -10px);
}

.avatar-rect.small img,
.avatar-rect.small canvas{
  transform-origin: top left;
  transform: scale(0.3579) translate(-50px, -10px);
}

/* Adesivo equipado (quadrado) */
.sticker{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:28px;
  height:28px;
  border-radius:10px;
  border:1px solid rgba(255,255,255,.14);
  background:rgba(255,255,255,.04);
  overflow:hidden;
}
.sticker img{ width:100%; height:100%; object-fit:cover; position:static; inset:auto; }
.sticker.clickable{ cursor:pointer; }

/* sticker menor (linha do nome) */
.sticker.sticker-small{
  width:22px;
  height:22px;
  border-radius:8px;
}
.sticker.sticker-small img{
  width:100%;
  height:100%;
  object-fit:cover;
}

/* sticker inline no meta */
.sticker.inline{ flex:0 0 auto; }

/* aliases (não sobrescrever o transform base) */
.avatar-rect.crop-top{ overflow:hidden; }
.avatar-rect.crop422{ overflow:hidden; }

/* Modal adesivos */
.modal{
  position:fixed;
  inset:0;
  background:rgba(0,0,0,.55);
  display:flex;
  align-items:center;
  justify-content:center;
  padding:16px;
  z-index:9999;
}
.modal-card{
  width:min(720px, 100%);
  border-radius:16px;
  border:1px solid rgba(255,255,255,.12);
  background:rgba(20,20,28,.96);
  padding:12px;
}
.modal-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  margin-bottom:8px;
}
.modal-title{ font-weight:900; }
.modal-close{
  border:1px solid rgba(255,255,255,.12);
  background:rgba(255,255,255,.04);
  color:#fff;
  border-radius:10px;
  padding:6px 10px;
  cursor:pointer;
}
.modal-close:hover{ background:rgba(255,255,255,.08); }

.stickers-grid{
  margin-top:10px;
  display:grid;
  grid-template-columns:repeat(6, 1fr);
  gap:10px;
}
@media (max-width: 720px){
  .stickers-grid{ grid-template-columns:repeat(4, 1fr); }
}
.sticker-item{
  border:1px solid rgba(255,255,255,.12);
  background:rgba(255,255,255,.04);
  border-radius:14px;
  padding:8px;
  cursor:pointer;
}
.sticker-item:hover{ background:rgba(255,255,255,.08); }
.sticker-item.equipped{ outline:2px solid rgba(130,90,255,.55); }
.sticker-item img{
  width:100%;
  height:56px;
  object-fit:cover;
  border-radius:10px;
}
.st-name{ margin-top:6px; font-size:12px; opacity:.9; text-align:center; }

/* Embeds */
.embed{ margin-top:10px; border-radius:14px; overflow:hidden; border:1px solid rgba(255,255,255,.12); }
.embed-img img{ width:100%; height:auto; display:block; }
.embed-yt iframe{ width:100%; aspect-ratio:16/9; display:block; }

/* ====== EDITOR (novo/editar) ====== */
.blog-editor-toolbar{
  margin-top:10px;
  display:flex;
  gap:8px;
  flex-wrap:wrap;
  align-items:center;
  padding:8px;
  border:1px solid rgba(255,255,255,.10);
  background:rgba(0,0,0,.18);
  border-radius:14px;
}
.blog-editor-toolbar .tbtn{
  border:1px solid rgba(255,255,255,.12);
  background:rgba(255,255,255,.04);
  color:#fff;
  padding:6px 10px;
  border-radius:999px;
  cursor:pointer;
  font-weight:900;
}
.blog-editor-toolbar .tbtn:hover{ background:rgba(255,255,255,.07); }

.ta.editor{
  width:100%;
  min-height:260px;
  border-radius:14px;
  border:1px solid rgba(255,255,255,.12);
  background:rgba(0,0,0,.25);
  color:#fff;
  padding:10px;
  outline:none;
  resize:vertical;
}

.editor-hint{ margin-top:8px; }

/* =====================================================
   AVATAR RECT — HARDENING (GLOBAL)
   Impede que regras genéricas (width/height 100%, object-fit, transform:none)
   destruam o crop do avatar (base 240x470) e deixem o corpo “fora do frame”.
   ===================================================== */

.avatar-rect > img,
.avatar-rect > canvas,
.avatar-rect img.avatar,
.avatar-rect canvas.avatar,
.avatar-rect img#avatar,
.avatar-rect canvas#avatar{
  width:240px !important;
  height:470px !important;
  max-width:none !important;
  max-height:none !important;
  min-width:240px !important;
  min-height:470px !important;
  object-fit:unset !important;
}

/* Reaplica o crop original do blogs.css se algum CSS zerar transform */
.avatar-rect img,
.avatar-rect canvas{
  transform-origin: top left !important;
  transform: scale(0.4421) translate(-50px, -10px) !important;
}

.avatar-rect.big img,
.avatar-rect.big canvas{
  transform-origin: top left !important;
  transform: scale(0.6316) translate(-45px, -10px) !important;
}

.avatar-rect.small img,
.avatar-rect.small canvas{
  transform-origin: top left !important;
  transform: scale(0.3579) translate(-50px, -10px) !important;
}

/* =====================================================
   AVATAR RECT — HARDENING (GLOBAL)
   Impede que regras genéricas (width/height 100%, object-fit, transform:none)
   destruam o crop do avatar (base 240x470) e deixem o corpo “fora do frame”.
   ===================================================== */

.avatar-rect > img,
.avatar-rect > canvas,
.avatar-rect img.avatar,
.avatar-rect canvas.avatar,
.avatar-rect img#avatar,
.avatar-rect canvas#avatar{
  width:240px !important;
  height:470px !important;
  max-width:none !important;
  max-height:none !important;
  min-width:240px !important;
  min-height:470px !important;
  object-fit:unset !important;
}

/* Reaplica o crop do blogs se algum CSS zerar transform */
.avatar-rect img,
.avatar-rect canvas{
  transform-origin: top left !important;
  transform: scale(0.4421) translate(-50px, -10px) !important;
}
.avatar-rect.big img,
.avatar-rect.big canvas{
  transform-origin: top left !important;
  transform: scale(0.6316) translate(-45px, -10px) !important;
}
.avatar-rect.small img,
.avatar-rect.small canvas{
  transform-origin: top left !important;
  transform: scale(0.3579) translate(-50px, -10px) !important;
}

/* =====================================================
   AVATAR RECT — HARDENING (GLOBAL)
   Impede que regras genéricas (width/height 100%, object-fit, transform:none)
   destruam o crop do avatar (base 240x470) e deixem o corpo “fora do frame”.
   ===================================================== */

.avatar-rect > img,
.avatar-rect > canvas,
.avatar-rect img.avatar,
.avatar-rect canvas.avatar,
.avatar-rect img#avatar,
.avatar-rect canvas#avatar{
  width:240px !important;
  height:470px !important;
  max-width:none !important;
  max-height:none !important;
  min-width:240px !important;
  min-height:470px !important;
  object-fit:unset !important;
}

/* Reaplica os crops do blogs.css com prioridade máxima */
.avatar-rect img,
.avatar-rect canvas{
  transform-origin: top left !important;
  transform: scale(0.4421) translate(-50px, -10px) !important;
}

.avatar-rect.big img,
.avatar-rect.big canvas{
  transform-origin: top left !important;
  transform: scale(0.6316) translate(-45px, -10px) !important;
}

.avatar-rect.small img,
.avatar-rect.small canvas{
  transform-origin: top left !important;
  transform: scale(0.3579) translate(-50px, -10px) !important;
}

/* =====================================================
   AVATAR RECT — HARDENING (GLOBAL)
   Impede que regras genéricas (width/height 100%, object-fit, transform:none)
   destruam o crop do avatar (base 240x470) e deixem o corpo “fora do frame”.
   ===================================================== */

.avatar-rect > img,
.avatar-rect > canvas,
.avatar-rect img.avatar,
.avatar-rect canvas.avatar,
.avatar-rect img#avatar,
.avatar-rect canvas#avatar{
  width:240px !important;
  height:470px !important;
  max-width:none !important;
  max-height:none !important;
  min-width:240px !important;
  min-height:470px !important;
  object-fit:unset !important;
  image-rendering:auto;
}

/* Reaplica o crop esperado (mantém as variações big/small abaixo) */
.avatar-rect > img,
.avatar-rect > canvas{
  transform-origin: top left !important;
  transform: scale(0.4421) translate(-50px, -10px) !important;
}

.avatar-rect.big > img,
.avatar-rect.big > canvas{
  transform-origin: top left !important;
  transform: scale(0.6316) translate(-45px, -10px) !important;
}

.avatar-rect.small > img,
.avatar-rect.small > canvas{
  transform-origin: top left !important;
  transform: scale(0.3579) translate(-50px, -10px) !important;
}

/* =====================================================
   AVATAR RECT — HARDENING (GLOBAL)
   Impede que regras genéricas (width/height 100%, object-fit, transform:none)
   destruam o crop do avatar (base 240x470) e deixem o corpo “fora do frame”.
   ===================================================== */

.avatar-rect > img,
.avatar-rect > canvas,
.avatar-rect img.avatar,
.avatar-rect canvas.avatar,
.avatar-rect img#avatar,
.avatar-rect canvas#avatar{
  width:240px !important;
  height:470px !important;
  max-width:none !important;
  max-height:none !important;
  min-width:240px !important;
  min-height:470px !important;
  object-fit:unset !important;
  image-rendering:auto;
}

/* Reaplica os crops originais do blogs.css (caso algum CSS zere transform) */
.avatar-rect img,
.avatar-rect canvas{
  transform-origin: top left !important;
  transform: scale(0.4421) translate(-50px, -10px) !important;
}

.avatar-rect.big img,
.avatar-rect.big canvas{
  transform-origin: top left !important;
  transform: scale(0.6316) translate(-45px, -10px) !important;
}

.avatar-rect.small img,
.avatar-rect.small canvas{
  transform-origin: top left !important;
  transform: scale(0.3579) translate(-50px, -10px) !important;
}
