/* Chat panel, emote bubbles and the turn ring. Colours fall back to the app palette in style.css. */
.cp{position:relative;display:flex;flex-direction:column;gap:8px;touch-action:manipulation}   /* direction comes from the dir attribute chatpanel.js sets (page language) */
.cp-body{position:relative;min-height:150px;border-radius:10px;background:#0f1a33}
.cp-list{max-height:150px;overflow-y:auto;padding:8px;font-size:15px;display:flex;flex-direction:column;gap:3px;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.cp-line{max-width:92%;width:fit-content;padding:3px 9px;border-radius:10px;background:#1a2a4d;line-height:1.4;overflow-wrap:anywhere;margin-inline-end:auto}
.cp-line.mine{margin-inline-end:0;margin-inline-start:auto;background:#33477a}
.cp-line.sys{max-width:100%;width:auto;margin:0;padding:1px 4px;background:none;color:var(--mut,#b9c3d9);text-align:center;font-size:13px}
.cp-line.banter{max-width:100%;width:auto;margin:0;padding:2px 6px;background:none;border-radius:0;color:var(--acc,#fca311);border-inline-start:3px solid var(--acc,#fca311)}
.cp-name{font-weight:700}
.cp-row{display:flex;gap:6px;align-items:stretch}
.cp-input{flex:1;min-width:0;min-height:44px;background:#0f1a33;color:var(--ink,#f4f1de);border:1px solid #3a4c7a;border-radius:10px;padding:10px 12px;font-size:16px}
.cp-send,.cp-emoji{min-height:44px;min-width:44px;border:0;border-radius:10px;background:#33477a;color:var(--ink,#f4f1de);font-size:16px;cursor:pointer;padding:0 14px}
.cp-emoji{width:44px;padding:0;font-size:22px;line-height:1}
.cp.open .cp-emoji{background:var(--acc,#fca311)}
.cp-send:focus-visible,.cp-emoji:focus-visible,.cp-input:focus-visible,.cp-tab:focus-visible,.cp-emo:focus-visible,.cp-phrase:focus-visible{outline:3px solid #fff;outline-offset:2px}
/* the sheet sits over the list, anchored to the bottom of the list; fades up when opened */
.cp-sheet{position:absolute;left:0;right:0;bottom:0;height:264px;max-height:70vh;display:flex;flex-direction:column;z-index:5;background:#1f2f55;border-radius:10px;box-shadow:0 -8px 24px #0009,inset 0 0 0 1px #ffffff14;opacity:0;visibility:hidden;transform:translateY(24px);transition:transform .22s ease,opacity .22s ease,visibility .22s}
.cp.open .cp-sheet{opacity:1;visibility:visible;transform:none}
.cp-tabs{display:flex;gap:4px;padding:6px 6px 0}
.cp-tab{flex:1;min-height:40px;border:0;border-radius:8px;background:transparent;color:var(--mut,#b9c3d9);font-size:15px;cursor:pointer}
.cp-tab.on{background:#33477a;color:var(--ink,#f4f1de);font-weight:700}
.cp-pane{flex:1;min-height:0;overflow-y:auto;padding:6px;display:flex;flex-wrap:wrap;gap:6px;align-content:flex-start;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.cp-pane[hidden]{display:none}
.cp-emojis{display:grid;grid-template-columns:repeat(auto-fill,minmax(44px,1fr))}
.cp-emojis[hidden]{display:none}
.cp-emo{min-height:44px;border:0;border-radius:8px;background:#14213d;font-size:26px;line-height:1;cursor:pointer;padding:0}
.cp-phrase{min-height:44px;padding:0 14px;border:0;border-radius:22px;background:#14213d;color:var(--ink,#f4f1de);font-size:15px;cursor:pointer}
.cp-emo:active,.cp-phrase:active,.cp-send:active,.cp-emoji:active{transform:scale(.94)}
/* floating emote over a player card ([data-player]) */
@keyframes cpEmote{0%{opacity:0;transform:translate(-50%,10px) scale(.5)}15%{opacity:1;transform:translate(-50%,-2px) scale(1.15)}30%{transform:translate(-50%,-6px) scale(1)}100%{opacity:0;transform:translate(-50%,-40px) scale(1.05)}}
.cp-emote{position:absolute;left:50%;top:-6px;font-size:30px;line-height:1;pointer-events:none;z-index:6;filter:drop-shadow(0 2px 6px #000a);animation:cpEmote 2s ease-out forwards}
/* turn ring: conic sweep around the card, --frac goes 1 -> 0 as the clock runs out */
.ringed{position:relative;--frac:1}
.ringed::before{content:"";position:absolute;inset:-4px;border-radius:14px;padding:3px;pointer-events:none;z-index:1;background:conic-gradient(var(--ring,var(--acc,#fca311)) calc(var(--frac)*360deg),#0000 0);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude}
.ringed.ring-low{--ring:#ff6b6b}
