/* Shoutbox widget - structure only. Each page sets the --sb-* colour tokens. */
.sb-wrap{
  --sb-radius:8px;
  border:1px solid var(--sb-border);
  background:var(--sb-elev);
  border-radius:var(--sb-radius);
  overflow:hidden;
  font-family:inherit;
}
.sb-head{
  display:flex; align-items:baseline; justify-content:space-between; gap:10px;
  padding:12px 18px; border-bottom:1px solid var(--sb-border);
  background:var(--sb-head-bg,transparent);
  color:var(--sb-strong); font-weight:600; font-size:15px;
}
.sb-head-right{display:flex; align-items:baseline; gap:12px;}
.sb-head .sb-count{font-weight:400; font-size:12px; color:var(--sb-muted);}
.sb-info-toggle{font:inherit; font-size:12px; font-weight:600; cursor:pointer;
  background:transparent; border:0; color:var(--sb-accent); padding:0;}

.sb-info{padding:14px 18px; border-bottom:1px solid var(--sb-border);
  background:var(--sb-head-bg,transparent); color:var(--sb-text); font-size:13px; line-height:1.55;}
.sb-info h4{margin:0 0 8px; font-size:13px; color:var(--sb-strong);}
.sb-info ul{margin:0; padding-left:18px;}
.sb-info li{margin:5px 0;}
.sb-info b{color:var(--sb-strong);}

.sb-list{
  max-height:360px; overflow-y:auto;
  padding:8px 0; margin:0;
  display:flex; flex-direction:column;
  scrollbar-width:thin;
  scrollbar-color:var(--sb-scroll-thumb,#888) var(--sb-scroll-track,transparent);
}
.sb-list::-webkit-scrollbar{width:10px;}
.sb-list::-webkit-scrollbar-track{background:var(--sb-scroll-track,transparent);}
.sb-list::-webkit-scrollbar-thumb{background:var(--sb-scroll-thumb,#888);
  border-radius:8px; border:2px solid var(--sb-scroll-track,transparent); background-clip:padding-box;}
.sb-list::-webkit-scrollbar-thumb:hover{background:var(--sb-scroll-thumb-hover,#aaa);}
.sb-empty{padding:26px 18px; text-align:center; color:var(--sb-muted); font-size:14px;}

.sb-msg{padding:8px 18px; border-top:1px solid var(--sb-border-soft,transparent);}
.sb-msg:first-child{border-top:0;}
.sb-msg .sb-meta{display:flex; align-items:baseline; gap:6px; margin-bottom:1px; flex-wrap:wrap;}
.sb-msg .sb-name{color:var(--sb-strong); font-weight:600; font-size:13px; word-break:break-word;}
.sb-msg .sb-tag{font-size:11px; font-variant-numeric:tabular-nums; white-space:nowrap;}
.sb-msg .sb-tag.id{color:var(--sb-muted);}
.sb-msg .sb-tag.trip{color:var(--sb-accent); font-weight:600;}
.sb-msg .sb-tag.staff{color:var(--sb-accent-contrast); background:var(--sb-accent); font-weight:700; padding:0 6px; border-radius:4px;}
.sb-msg .sb-time{color:var(--sb-muted); font-size:11px; white-space:nowrap; margin-left:auto;}
.sb-msg .sb-text{color:var(--sb-text); font-size:14px; line-height:1.5; word-wrap:break-word; overflow-wrap:anywhere; white-space:pre-wrap;}

.sb-loadmore{display:block; width:100%; text-align:center; font:inherit; font-size:13px; cursor:pointer;
  color:var(--sb-accent); background:transparent; border:0; border-bottom:1px solid var(--sb-border); padding:10px;}
.sb-loadmore:disabled{color:var(--sb-muted); cursor:default;}

.sb-form{padding:12px 18px; border-top:1px solid var(--sb-border); background:var(--sb-form-bg,transparent); position:relative;}
.sb-row{display:flex; gap:8px;}
.sb-form input, .sb-form textarea{
  font-family:inherit; font-size:14px; color:var(--sb-text);
  background:var(--sb-input-bg); border:1px solid var(--sb-border);
  border-radius:6px; padding:9px 11px; outline:none;
}
.sb-form input:focus, .sb-form textarea:focus{border-color:var(--sb-accent);}
.sb-name-input{width:150px; flex:none;}
.sb-text-input{flex:1; resize:none; min-height:40px; max-height:120px;
  scrollbar-width:thin; scrollbar-color:var(--sb-scroll-thumb,#888) transparent;}
.sb-text-input::-webkit-scrollbar{width:8px;}
.sb-text-input::-webkit-scrollbar-thumb{background:var(--sb-scroll-thumb,#888); border-radius:6px;}
.sb-hp{position:absolute; left:-9999px; width:1px; height:1px; opacity:0;}

/* quick emoji row (most used); "more" sits inline right after the last emoji */
.sb-quick{display:flex; align-items:center; gap:2px; margin-top:8px; overflow-x:auto; scrollbar-width:none;}
.sb-quick::-webkit-scrollbar{display:none;}
.sb-quick button{flex:0 0 auto; font-size:20px; line-height:1; background:transparent;
  border:0; border-radius:6px; padding:5px 8px; cursor:pointer;}
.sb-quick button:hover{background:var(--sb-input-bg);}
.sb-quick button.sb-quick-more{flex:0 0 auto; font:inherit; font-size:12px; font-weight:600; white-space:nowrap;
  cursor:pointer; color:var(--sb-accent); background:transparent; border:0; padding:5px 6px; margin-left:4px;}
.sb-quick button.sb-quick-more:hover{text-decoration:underline; background:transparent;}
.sb-bottom{display:flex; align-items:center; gap:10px; margin-top:8px;}
.sb-status{font-size:12px; color:var(--sb-muted); min-height:16px; flex:1; min-width:0;}
.sb-status.err{color:var(--sb-accent);}

/* emoji picker */
.sb-emoji-panel{position:absolute; left:18px; right:18px; bottom:62px; z-index:20;
  background:var(--sb-elev); border:1px solid var(--sb-border); border-radius:8px; padding:8px 10px;
  box-shadow:0 8px 24px rgba(0,0,0,.28); max-height:208px; overflow-y:auto;
  scrollbar-width:thin; scrollbar-color:var(--sb-scroll-thumb,#888) transparent;}
.sb-emoji-panel::-webkit-scrollbar{width:8px;}
.sb-emoji-panel::-webkit-scrollbar-thumb{background:var(--sb-scroll-thumb,#888); border-radius:6px;}
.sb-emoji-cat{font-size:10px; color:var(--sb-muted); letter-spacing:.4px; text-transform:uppercase; margin:8px 2px 3px;}
.sb-emoji-cat:first-child{margin-top:0;}
.sb-emoji-grid{display:grid; grid-template-columns:repeat(auto-fill, minmax(32px,1fr)); gap:1px;}
.sb-emoji-grid button{font-size:20px; line-height:1; background:transparent; border:0; border-radius:6px; padding:5px 0; cursor:pointer;}
.sb-emoji-grid button:hover{background:var(--sb-input-bg);}
.sb-send{
  font-family:inherit; font-size:14px; font-weight:600; cursor:pointer;
  color:var(--sb-accent-contrast); background:var(--sb-accent);
  border:0; border-radius:6px; padding:9px 18px;
}
.sb-send:disabled{opacity:.55; cursor:default;}
.sb-note{font-size:11px; color:var(--sb-muted); margin-top:8px;}

/* likes: a small inline monochrome icon next to the name, not a button */
.sb-like{display:inline-flex; align-items:center; cursor:pointer; background:transparent; border:0;
  padding:0; margin-left:4px; color:var(--sb-muted); vertical-align:middle;}
.sb-like svg{width:13px; height:13px; display:block;}
.sb-like:hover{color:var(--sb-strong);}
.sb-like.liked{color:var(--sb-accent);}
.sb-likers{font-size:11px; color:var(--sb-muted); cursor:pointer; margin-left:1px;}
.sb-likers:empty{display:none;}
.sb-likers:hover{text-decoration:underline; color:var(--sb-accent);}

/* show the thumb only where it was actually liked; for the rest it appears on hover
   (pointer devices); on touch screens every thumb stays visible */
@media (hover: hover) and (pointer: fine){
  .sb-like{opacity:0; transition:opacity .12s ease;}
  .sb-msg:hover .sb-like,
  .sb-like.has-likes,
  .sb-like.liked{opacity:1;}
}

/* likers dialog */
.sb-modal{position:fixed; inset:0; z-index:50; display:flex; align-items:center; justify-content:center;
  background:rgba(0,0,0,.5); padding:16px;}
.sb-modal-box{width:100%; max-width:340px; max-height:70vh; display:flex; flex-direction:column;
  background:var(--sb-elev); border:1px solid var(--sb-border); border-radius:10px; overflow:hidden;
  box-shadow:0 12px 40px rgba(0,0,0,.45);}
.sb-modal-head{display:flex; align-items:center; justify-content:space-between; padding:12px 16px;
  border-bottom:1px solid var(--sb-border); color:var(--sb-strong); font-weight:600;}
.sb-modal-close{font:inherit; font-size:20px; line-height:1; cursor:pointer; background:transparent;
  border:0; color:var(--sb-muted); padding:0 4px;}
.sb-modal-close:hover{color:var(--sb-accent);}
.sb-modal-list{overflow-y:auto; padding:6px 0; scrollbar-width:thin;
  scrollbar-color:var(--sb-scroll-thumb,#888) transparent;}
.sb-modal-list::-webkit-scrollbar{width:8px;}
.sb-modal-list::-webkit-scrollbar-thumb{background:var(--sb-scroll-thumb,#888); border-radius:6px;}
.sb-modal-item{display:flex; align-items:baseline; gap:6px; padding:8px 16px;}
.sb-modal-item .sb-name{color:var(--sb-strong); font-weight:600; font-size:14px;}
.sb-modal-empty{padding:18px 16px; color:var(--sb-muted); text-align:center;}

@media (max-width:560px){
  .sb-row{flex-direction:column;}
  .sb-name-input{width:100%;}
}
