/* One visual system for the portal chat and the forum's chat widget. */
.pc-chat, .ipsApp_front .ipsWidget:has(.evsb) {
  padding:16px;border:1px solid #32343f99;border-radius:8px;background:#181b25;
  box-shadow:0 12px 24px #0003;overflow:hidden;
}
.pc-chat{display:flex;flex-direction:column;gap:12px;box-sizing:border-box;width:100%;min-width:0;position:relative;color:#bbc9cf;font:400 14px/22px var(--cs-font-body)}
.pc-chat__head,
.ipsApp_front .ipsWidget:has(.evsb) .ipsWidget__header {
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  margin:0;padding:0 0 8px;border:0;border-bottom:1px solid #32343f99;background:none;
}
.pc-chat__title h2,.ipsApp_front .evsb__title {
  margin:0;font:600 20px/28px var(--cs-font-heading);letter-spacing:0;text-transform:uppercase;color:#e0e2ef;
}
.ipsApp_front .evsb__title{gap:4px;}
.ipsApp_front .ipsWidget:has(.evsb) .ipsWidget__header{border-radius:0;}
.ipsApp_front .evsb__title::before{width:8px;height:8px;box-shadow:none;}
.ipsApp_front .ipsWidget:has(.evsb) .ipsWidget__content{margin:0;padding:12px 0 0;display:flex;flex-direction:column;gap:12px;}
.pc-chat [data-chat-connection],.ipsApp_front .evsb__connection{font:600 12px/18px var(--cs-font-mono);letter-spacing:.08em;}
.portal-chat-announcement,.ipsApp_front .evsb__announcement {
  display:flex;align-items:flex-start;gap:8px;margin:0;padding:8px 12px;
  background:#00d2ff1a;border:1px solid #00d2ff4d;border-radius:6px;color:#e0e2ef;font:400 14px/22px var(--cs-font-body);
}
.portal-chat-announcement a,.ipsApp_front .evsb__announcement a{color:#a5e7ff;text-decoration:underline;}
.portal-chat-announcement>.material-symbols-outlined,.ipsApp_front .evsb__announcement>i{font-size:16px;line-height:22px;color:#a5e7ff;}
.pc-chat #shoutbox-messages,.ipsApp_front .evsb__stream{margin:0;padding:0;display:flex;flex-direction:column;gap:8px;max-height:min(300px,60vh);overflow-y:auto;overscroll-behavior:contain;scrollbar-color:#45616e transparent;}
.portal-chat-message,.ipsApp_front .evsb__stream>.evsb__message {
  padding:8px;gap:8px;border:0;border-radius:8px;background:#1c1f2999;box-shadow:none;
}
.portal-chat-message:hover,.ipsApp_front .evsb__stream>.evsb__message:hover{background:#1c1f29;}
.ipsApp_front .evsb__stream{--i-data--icon-width:36px;}
.ipsApp_front .evsb__stream .ipsData__icon,.ipsApp_front .evsb__stream .ipsUserPhoto{width:36px;height:36px;flex-shrink:0;}
.ipsApp_front .evsb__stream .ipsUserPhoto img{width:36px;height:36px;object-fit:cover;}
.portal-chat-message img,.ipsApp_front .evsb__stream .ipsUserPhoto,.ipsApp_front .evsb__stream .ipsUserPhoto img{border-radius:8px;}
.ipsApp_front .evsb__author,.ipsApp_front .evsb__meta{gap:4px;}
.portal-chat-role,.ipsApp_front .evsb__author::before{padding:2px 6px;border-radius:3px;font:700 11px/16px var(--cs-font-mono);letter-spacing:.08em;}
.portal-chat-time,.ipsApp_front .evsb__time{font:500 12px/18px var(--cs-font-mono);color:#859399;}
.pc-chat [data-chat-compose]:not(:has(form)),.ipsApp_front .evsb__guestLogin {
  display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0;padding:8px;
  border:1px solid #32343fcc;border-radius:8px;background:#0b0e17cc;font:400 14px/22px var(--cs-font-body);color:#bbc9cf;
}
.pc-chat [data-chat-compose]>a,.ipsApp_front .evsb__guestLogin a{font:700 14px/20px var(--cs-font-mono);color:#a5e7ff;letter-spacing:.04em;text-transform:uppercase;}
.ipsApp_front .evsb__form{margin:0;padding:0;border:0;background:none;}
.ipsApp_front .evsb__composer{border-radius:8px;background:#1c1f29;}
.ipsApp_front .evsb__input{font:400 14px/22px var(--cs-font-body);color:#e0e2ef;}
.ipsApp_front .evsb__send{height:36px;min-height:36px;padding:0 16px;background:#00d2ff;color:#00566a;border:0;border-radius:8px;}
@media(max-width:767px){.ipsApp_front .evsb__input{font-size:16px;line-height:24px;}}

/* Portal chat — mirrors the forum chat (evsb__*): oldest first, hover actions, one bordered composer. */
.pc-streamwrap{position:relative;min-width:0}
.pc-chat .pc-streamwrap [hidden],.pc-chat .pc-compose [hidden],.pc-menu[hidden]{display:none!important}
.pc-msg{position:relative;flex:0 0 auto;display:flex;align-items:flex-start;gap:8px;transition:background-color .15s}
.pc-msg--own{box-shadow:inset 2px 0 0 #00d2ffb3}
.pc-msg--flash{background:#00d2ff1f!important}
.pc-avatar-link{flex:0 0 36px;width:36px;height:36px;display:block}
.pc-avatar{display:block;width:36px;height:36px;border-radius:8px;object-fit:cover;background:#32343f}
.pc-avatar--letter{display:flex;align-items:center;justify-content:center;background:#00d2ff;color:#00566a;font:700 16px/1 var(--cs-font-heading)}
.pc-body{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:4px}
.pc-meta{display:flex;align-items:center;gap:4px;flex-wrap:nowrap}
.pc-author{display:inline-flex;align-items:center;gap:4px;min-width:0}
.pc-role{flex-shrink:0;background:#32343f;color:#bbc9cf}
.pc-role--mod{background:#0566d9;color:#e6ecff}
.pc-role--admin{background:#93000a;color:#ffdad6}
.pc-name{min-width:0;max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:600 14px/20px var(--cs-font-body);color:#e0e2ef;text-decoration:none}
.pc-name--staff{color:#a5e7ff}
a.pc-name:hover{text-decoration:underline}
.pc-muted{padding:1px 4px;border-radius:4px;background:#32343f;color:#ffb4ab;font:700 10px/1.4 var(--cs-font-mono);letter-spacing:.08em;text-transform:uppercase}
.pc-time{margin-inline-start:auto;flex-shrink:0}
.pc-edited{flex-shrink:0;font:italic 400 11px/18px var(--cs-font-body);color:#859399;cursor:help}
.pc-time,.pc-edited{transition:opacity .15s}
.pc-text{white-space:pre-wrap;overflow-wrap:anywhere;font:400 14px/22px var(--cs-font-body);color:#bbc9cf}
.pc-quote{display:block;padding:5px 10px;border-left:2px solid #00d2ff99;border-radius:0 6px 6px 0;background:#0b0e1799;font-size:12px;line-height:18px;text-decoration:none}
.pc-quote-author{display:block;color:#a5e7ff;font-weight:600}
.pc-quote-text{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#9eafbe}
.pc-quote:hover .pc-quote-author{color:#e0e2ef}
.pc-attach-image{align-self:flex-start;max-width:100%}
.pc-attach-image img{display:block;max-width:min(100%,26rem);max-height:18rem;object-fit:contain;border:1px solid #32343f;border-radius:8px}
.pc-attach{align-self:flex-start;display:inline-flex;align-items:center;gap:10px;max-width:100%;padding:7px 12px;border-radius:8px;background:#32343f;color:#e0e2ef;text-decoration:none;font:500 14px/20px var(--cs-font-body)}
.pc-attach:hover{background:#363943}
.pc-attach .material-symbols-outlined{font-size:18px;color:#a5e7ff}
.pc-attach-name{min-width:0;overflow-wrap:anywhere}
.pc-attach-size{flex-shrink:0;font-size:12px;color:#859399;white-space:nowrap}
.pc-footer{display:flex;align-items:center;flex-wrap:wrap;gap:6px}
.pc-reaction{display:inline-flex;align-items:center;gap:5px;padding:0 9px;border:1px solid #ffffff10;border-radius:999px;background:#272a34;color:#e0e2ef;font-size:12px;line-height:22px;cursor:pointer}
.pc-reaction:disabled{cursor:default}
.pc-reaction:not(:disabled):hover{background:#32343f;border-color:#00d2ff66}
.pc-reaction--mine{background:#00d2ff1f;border-color:#00d2ff88}
.pc-reaction--mine:not(:disabled):hover{background:#00d2ff2e;border-color:#00d2ffcc}
.pc-reaction-count{font-weight:600;font-variant-numeric:tabular-nums}
.pc-act{display:inline-flex;align-items:center;gap:6px;padding:3px 8px;border:0;border-radius:6px;background:none;color:#9eafbe;font:400 12px/18px var(--cs-font-body);cursor:pointer}
.pc-act .material-symbols-outlined{font-size:16px}
.pc-act:hover,.pc-act:focus-visible,.pc-act[aria-expanded="true"]{background:#272a34;color:#a5e7ff}
.pc-act:not(:disabled):active,.pc-tool:active,.pc-reaction:not(:disabled):active{transform:translateY(1px)}
@media(hover:hover){
  .pc-hover{opacity:0;transition:opacity .15s}
  .pc-msg:hover .pc-hover,.pc-msg:focus-within .pc-hover,.pc-hover[aria-expanded="true"]{opacity:1}
  .pc-footer--bare{position:absolute;top:8px;right:8px}
  .pc-msg:has(.pc-footer--bare):is(:hover,:focus-within) :is(.pc-time,.pc-edited){opacity:0}
}
.pc-older{align-self:center;flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border:0;border-radius:6px;background:none;color:#a5e7ff;font:600 13px/20px var(--cs-font-body);cursor:pointer}
.pc-older .material-symbols-outlined{font-size:16px}
.pc-older:hover{background:#272a34}
.pc-older:disabled{opacity:.5;cursor:progress}
.pc-empty{padding:16px;text-align:center;color:#859399;font:400 14px/22px var(--cs-font-body)}
.pc-jump{position:absolute;left:50%;bottom:12px;translate:-50% 0;z-index:2;max-width:calc(100% - 24px);padding:4px 14px;border:0;border-radius:999px;background:#00d2ff;color:#00566a;font:700 12px/20px var(--cs-font-mono);letter-spacing:.04em;box-shadow:0 4px 12px #00000040;cursor:pointer}
.pc-jump:hover{filter:brightness(1.1)}
.pc-menu{position:fixed;z-index:80;min-width:190px;padding:4px;border:1px solid #32343f;border-radius:10px;background:#10131c;box-shadow:0 8px 24px #00000066}
.pc-menu-item{display:flex;align-items:center;gap:10px;width:100%;padding:8px 12px;border:0;border-radius:6px;background:none;color:#e0e2ef;text-align:start;font:400 14px/20px var(--cs-font-body);cursor:pointer}
.pc-menu-item .material-symbols-outlined{font-size:18px;color:#9eafbe}
.pc-menu-item:hover,.pc-menu-item:focus-visible{background:#272a34;outline:0}
.pc-menu-item:active{background:#32343f}
.pc-menu-item--danger,.pc-menu-item--danger .material-symbols-outlined{color:#ffb4ab}
.pc-menu-item--danger:hover{background:#93000a40;color:#ffdad6}

/* composer */
.pc-compose{display:flex;flex-direction:column;gap:8px;min-width:0}
.pc-form{display:flex;flex-direction:column;gap:8px;margin:0}
.pc-composer{position:relative;display:flex;align-items:flex-end;gap:4px;padding:4px 4px 4px 12px;border:1px solid #3c494e;border-radius:8px;background:#1c1f29;transition:border-color .15s,box-shadow .15s}
.pc-composer:hover:not(:focus-within){border-color:#00d2ff66}
.pc-composer:focus-within{border-color:#00d2ff;box-shadow:0 0 0 3px #00d2ff26}
.pc-chat .pc-composer .pc-input{flex:1 1 auto;min-width:0;height:32px;min-height:32px;max-height:160px;margin:0;padding:5px 0;border:0;border-radius:0;outline:0;box-shadow:none;background:transparent;color:#e0e2ef;font:400 14px/22px var(--cs-font-body);resize:none;overflow-y:hidden;scrollbar-width:thin}
.pc-input::placeholder{color:#859399}
.pc-tools{display:flex;align-items:center;gap:2px;flex:0 0 auto}
.pc-tool{display:inline-grid;place-items:center;width:32px;height:32px;border:0;border-radius:6px;background:none;color:#9eafbe;cursor:pointer}
.pc-tool .material-symbols-outlined{font-size:20px}
.pc-tool:hover,.pc-tool:focus-visible{background:#272a34;color:#a5e7ff}
.pc-tool--small{width:24px;height:24px}
.pc-tool--small .material-symbols-outlined{font-size:16px}
.pc-send{height:36px;margin-inline-start:2px;padding:0 16px;border:0;border-radius:8px;background:#00d2ff;color:#00566a;font:700 14px/20px var(--cs-font-mono);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;transition:filter .15s}
.pc-send:hover{filter:brightness(1.1)}
.pc-send:disabled{opacity:.5;cursor:progress}
.pc-reply{display:flex;align-items:center;gap:8px;padding:4px 4px 4px 12px;border-inline-start:3px solid #00d2ff;border-radius:6px;background:#1c1f29;color:#9eafbe;font-size:13px;line-height:20px}
.pc-reply>span{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pc-reply .material-symbols-outlined{font-size:14px;vertical-align:-2px;margin-inline-end:6px;color:#a5e7ff}
.pc-reply strong{color:#e0e2ef;font-weight:600}
.pc-fileline{display:flex;align-items:center;gap:8px;font-size:12px;line-height:18px;color:#9eafbe}
.pc-fileline .material-symbols-outlined{font-size:16px;color:#a5e7ff}
.pc-fileline-name{min-width:0;max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pc-error{padding:10px 14px;border:1px solid #ffb4ab55;border-radius:10px;background:#93000a;color:#ffdad6;font:400 14px/20px var(--cs-font-body)}
.pc-suggest{position:absolute;inset-inline:0;bottom:calc(100% + 6px);z-index:5;max-height:224px;overflow-y:auto;margin:0;padding:4px 0;list-style:none;border:1px solid #00d2ff40;border-radius:10px;background:#10131c;box-shadow:0 8px 24px #00000066}
.pc-suggest-item{display:block;width:100%;padding:6px 12px;border:0;background:none;color:#e0e2ef;text-align:start;font:400 14px/20px var(--cs-font-body);cursor:pointer}
.pc-suggest-item:hover,.pc-suggest-item:focus-visible{background:#00d2ff1f;box-shadow:inset 3px 0 0 #00d2ff;outline:0}
.pc-chat [data-offline]{color:#bbc9cf!important}
.pc-chat [data-offline]>span:first-child{background:#bbc9cf!important}
@media(max-width:600px){.pc-chat #shoutbox-messages{max-height:min(300px,50vh)}.pc-name{max-width:110px}}
@media(max-width:767px){.pc-chat .pc-composer .pc-input{font-size:16px;line-height:24px}}
@media(prefers-reduced-motion:reduce){.pc-msg,.pc-time,.pc-edited,.pc-hover,.pc-composer,.pc-send{transition:none}}
/* audit fixes: match forum header pill, base text colour, avatar backdrop */
.pc-chat [data-chat-connection]{display:inline-block}
.pc-chat span:has(>[data-chat-connection]){padding:2px 6px;gap:4px}
.pc-chat span:has(>[data-chat-connection])>span:first-child{width:5px;height:5px}
.pc-msg{color:#bbc9cf}
.pc-avatar{background:#1c1f29}
.pc-svg{flex:0 0 auto;display:block}
.pc-avatar.pc-avatar--letter{background:#00d2ff;color:#00566a}
.pc-jump{white-space:nowrap}

/* ── Shared chat shell (portal home + forum): header, status pill, guest bar ── */
.pc-chat h2{margin:0}
.pc-chat__title{display:flex;align-items:center;gap:8px}
.pc-chat__dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#69f6b9;flex:0 0 auto}
.pc-chat__status{display:inline-flex;align-items:center;gap:4px;padding:2px 6px;border-radius:4px;background:#272a34;color:#69f6b9;font:600 12px/18px var(--cs-font-mono);letter-spacing:.08em;text-transform:uppercase}
.pc-chat__status .pc-chat__dot{width:5px;height:5px}
.pc-chat__guest>a{display:inline-flex;align-items:center;gap:4px}
.pc-chat__guest>a .material-symbols-outlined{font-size:14px}
.pc-chat__guest>a:hover span:first-child{text-decoration:underline;text-underline-offset:4px}
.pc-note{font:400 14px/22px var(--cs-font-body);color:#bbc9cf}
.pc-notice{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px;border:1px solid #32343fcc;border-radius:8px;background:#0b0e17cc}
.pc-hidden{display:none!important}
/* Own-message accent is part of the shared markup, so the forum shows it too. */
/* ── Overlays appended to <body> by chat.js (emoji picker, dialogs, toast) ── */
.pc-pop{position:fixed;z-index:80;display:flex;flex-wrap:wrap;gap:2px;padding:4px;max-width:232px;border:1px solid #00d2ff66;border-radius:12px;background:#0b0e17;box-shadow:0 8px 24px #00000080}
.pc-pick{width:32px;height:32px;border:0;border-radius:6px;background:none;font-size:18px;line-height:1;cursor:pointer;color:inherit}
.pc-pick:hover{background:#272a34}
.pc-dialog{width:min(92vw,380px);padding:16px;border:1px solid #32343f;border-radius:12px;background:#181b25;color:#e0e2ef;box-shadow:0 16px 40px #000000b3}
.pc-dialog::backdrop{background:#00000099}
.pc-dialog-form{display:flex;flex-direction:column;gap:12px;margin:0}
.pc-dialog-title{margin:0;font:600 20px/28px var(--cs-font-heading);text-transform:uppercase;color:#e0e2ef}
.pc-dialog-text{margin:0;font:400 13px/20px var(--cs-font-body);color:#bbc9cf;overflow-wrap:anywhere}
.pc-dialog-em{color:#a5e7ff;font-weight:600}
.pc-dialog-stack{display:flex;flex-direction:column;gap:6px}
.pc-dialog-actions{display:flex;justify-content:flex-end;gap:8px;padding-top:4px}
.pc-radio{display:flex;align-items:center;gap:8px;font:400 13px/20px var(--cs-font-body);color:#e0e2ef}
.pc-btn{padding:6px 16px;border:0;border-radius:8px;background:#272a34;color:#bbc9cf;font:700 12px/16px var(--cs-font-mono);letter-spacing:.06em;text-transform:uppercase;cursor:pointer}
.pc-btn:hover{background:#32343f}
.pc-btn--primary{background:#00d2ff;color:#00566a}
.pc-btn--primary:hover{background:#00d2ff;filter:brightness(1.1)}
.pc-btn--danger{background:#93000a;color:#ffdad6}
.pc-btn--danger:hover{background:#93000a;filter:brightness(1.15)}
.pc-field{box-sizing:border-box;width:100%;resize:none;padding:8px 12px;border:1px solid #32343f;border-radius:8px;background:#0b0e17;color:#e0e2ef;font:400 14px/22px var(--cs-font-body);outline:0}
.pc-field:focus{border-color:#00d2ff}
.pc-toast{position:fixed;left:50%;bottom:24px;z-index:90;max-width:90vw;transform:translateX(-50%);padding:8px 16px;border-radius:8px;font:500 13px/20px var(--cs-font-body);box-shadow:0 8px 24px #00000080}
.pc-toast--good{background:#00513a;color:#69f6b9}
.pc-toast--bad{background:#93000a;color:#ffdad6}
.portal-chat-announcement>.pc-announce-text{min-width:0;white-space:pre-wrap;overflow-wrap:anywhere}
/* Forum: the shared chat sits directly in the widget/page box, which must not add a second frame. */
.ipsApp_front .ipsWidget:has(.pc-chat),.ipsApp_front .ipsBox:has(.pc-chat){padding:0;border:0;background:none;box-shadow:none;overflow:visible}
.ipsApp_front .pc-chat{margin:0}
