/* Frontend modal + cards */
.ch-pub-wrap{ display:inline-block }
.ch-pub-btn{
  cursor:pointer; padding:.8rem 1.15rem; border:0;
  border-radius:999px;
  box-shadow:0 6px 18px rgba(0,0,0,.12);
  background:#111; color:#fff; font-weight:600; letter-spacing:.2px;
  transition: transform .05s ease, box-shadow .2s ease, opacity .2s ease;
}
.ch-pub-btn:hover{ transform: translateY(-1px); box-shadow:0 10px 22px rgba(0,0,0,.14) }
.ch-pub-btn:active{ transform: translateY(0); box-shadow:0 4px 14px rgba(0,0,0,.12) }

.ch-pub-modal[hidden]{ display:none !important }
.ch-pub-modal{ position:fixed; inset:0; background:rgba(0,0,0,.45); display:flex; align-items:center; justify-content:center; z-index:2147483000 !important; padding:1rem }

.ch-pub-dialog{
  background:#fff;
  max-width:800px; width:100%;
  border-radius:16px; padding:1.2rem 1.2rem 1rem;
  position:relative; max-height:calc(100dvh - 2rem);
  overflow:auto; -webkit-overflow-scrolling: touch;
}
.ch-pub-close{ position:absolute; right:.6rem; top:.6rem; background:transparent; border:0; font-size:1.8rem; line-height:1; cursor:pointer }

.ch-pub-form label{ display:block; margin:.6rem 0 }
.ch-pub-form input, .ch-pub-form select, .ch-pub-form textarea{
  width:100%; padding:.55rem .7rem; border-radius:10px; border:1px solid #cbd5e1; background:#fff
}
.ch-grid{ display:grid; grid-template-columns:1fr 1fr; gap:.6rem }
.ch-grid > label{ margin:0 }
.ch-two{ display:grid; grid-template-columns:1fr 1fr; gap:.6rem }
@media (max-width:700px){ .ch-grid{ grid-template-columns:1fr } .ch-two{ grid-template-columns:1fr } }

.ch-pub-actions{
  position: sticky; bottom: -1px;
  background:#fff;
  padding-top:.6rem; margin-top:.6rem; border-top:1px solid #eee;
  display:flex !important; gap:.6rem !important; justify-content:flex-end !important; align-items:center !important;
}
.ch-pub-send, .ch-pub-cancel{
  appearance:none !important; display:inline-flex !important; align-items:center !important; justify-content:center !important;
  padding:.6rem 1rem !important; border:0 !important; border-radius:999px !important;
  font: inherit !important; line-height:1 !important; cursor:pointer !important;
}
.ch-pub-send{ background:#111 !important; color:#fff !important; font-weight:600 }
.ch-pub-cancel{ background:#e5e7eb !important; color:#111 !important }

.ch-cover-preview{ margin:.3rem 0 .8rem 0; display:none }
.ch-cover-preview img{ max-height:160px; width:auto; border-radius:8px; border:1px solid #e5e7eb }

.ch-pub-grid{ display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:1rem; margin-top:1rem }
@media (max-width:900px){ .ch-pub-grid{ grid-template-columns:repeat(2, minmax(0,1fr)) } }
@media (max-width:600px){ .ch-pub-grid{ grid-template-columns:1fr } }

.ch-pub-card{ background:#fff; border:1px solid #e5e7eb; border-radius:16px; overflow:hidden; display:flex; gap:1rem }
.ch-pub-cover{ width:140px; height:200px; object-fit:cover; flex:0 0 140px; background:#f1f5f9 }
.ch-pub-cover--ph{ display:block }
.ch-pub-body{ padding:1rem }
.ch-pub-title{ margin:.2rem 0 .4rem 0; font-size:1.05rem }
.ch-pub-meta{ color:#334155; font-size:.95rem }
.ch-pub-venue{ color:#475569; font-size:.9rem; margin:.3rem 0 }
.ch-pub-abs{ color:#334155; font-size:.95rem }
.ch-pub-links{ display:flex; gap:.6rem; margin-top:.5rem }
.ch-pub-link{ display:inline-flex; align-items:center; justify-content:center; padding:.35rem .7rem; border-radius:999px; border:1px solid #cbd5e1; text-decoration:none }
