/* SHADOW BROKER PRIVATE CHANNELS // first-class tab inside GM chat */
.gm-dm-console{display:none}
/* New private transmission alert: pulse only while the tab is closed and unread DMs exist. */
.gm-dm-toggle.has-unread{
  position:relative;
  z-index:1;
  color:#fff3ff !important;
  border-color:#d95cff !important;
  animation:gmDmUnreadFlash 1.05s ease-in-out infinite;
}
.gm-dm-toggle.has-unread::after{
  content:attr(data-unread);
  position:absolute;
  top:5px;
  right:7px;
  min-width:16px;
  height:16px;
  padding:0 4px;
  display:grid;
  place-items:center;
  border:1px solid rgba(255,255,255,.55);
  border-radius:9px;
  background:#c62d72;
  box-shadow:0 0 10px rgba(233,63,172,.85);
  color:#fff;
  font:900 10px/1 var(--font-machine,ui-monospace,monospace);
  letter-spacing:0;
}
@keyframes gmDmUnreadFlash{
  0%,100%{background:linear-gradient(180deg,rgba(79,31,104,.96),rgba(42,18,59,.98));box-shadow:inset 0 0 0 1px rgba(201,100,255,.35),0 0 6px rgba(196,65,255,.22)}
  50%{background:linear-gradient(180deg,rgba(180,46,130,.98),rgba(91,25,91,.98));box-shadow:inset 0 0 0 1px rgba(255,184,247,.78),0 0 18px rgba(236,75,210,.9),0 0 34px rgba(150,58,255,.45)}
}
@media (prefers-reduced-motion:reduce){.gm-dm-toggle.has-unread{animation:none;box-shadow:0 0 14px rgba(236,75,210,.72)}}
/* The main ASOC sheet has late ID-scoped layout rules for the public feed.
   Match that specificity here so PRIVATE CHANNELS is an exclusive view, not
   a header placed above Battle Comms. */
body.room-mode-casual #gm-panel .gm-module-chat .gm-chat-panel.gm-dm-open > :not(.gm-chat-header):not(#gm-dm-console){
  display:none !important;
  visibility:hidden !important;
  pointer-events:none !important;
}
body.room-mode-casual #gm-panel .gm-module-chat .gm-chat-panel.gm-dm-open > #gm-dm-console{
  display:flex !important;flex:1 1 auto;min-height:0;max-height:none;
  visibility:visible !important;pointer-events:auto !important;
  margin:0;border:0;border-top:1px solid rgba(116,126,139,.30);border-radius:0;
  background:linear-gradient(180deg,rgba(13,17,22,.96),rgba(7,9,12,.98));
  overflow:hidden;flex-direction:column;box-shadow:inset 0 1px rgba(255,255,255,.025);
  font-family:var(--font-machine,ui-monospace,monospace);color:#d9dce2;
}
.gm-dm-console>header{display:grid;grid-template-columns:1fr auto;align-items:center;gap:2px 8px;padding:9px 10px;border-bottom:1px solid rgba(155,93,224,.22);background:rgba(155,93,224,.045)}
.gm-dm-console>header span{font-size:.57rem;font-weight:900;letter-spacing:.16em;color:#c28bf0}
.gm-dm-console>header small{grid-column:1/-1;font-size:.43rem;letter-spacing:.12em;color:#68727e}
.gm-dm-console>header>b{min-width:18px;height:18px;padding:0 5px;display:grid;place-items:center;border-radius:9px;background:#8f2749;color:#fff;font-size:.5rem}
.gm-dm-roster{flex:1;min-height:0;overflow:auto;padding:5px}
.gm-dm-person{position:relative;width:100%;display:grid;grid-template-columns:34px 1fr auto;align-items:center;gap:8px;padding:6px;border:0;border-bottom:1px solid rgba(255,255,255,.045);background:transparent;color:inherit;text-align:left;cursor:pointer}
.gm-dm-person:hover{background:rgba(155,93,224,.08)}
/* Unread private channels must read as an alert across the whole row, not just a tiny badge. */
.gm-dm-person.unread{
  z-index:2;
  border:1px solid rgba(226,116,255,.78);
  border-radius:8px;
  background:
    linear-gradient(90deg,rgba(121,35,161,.34),rgba(176,48,136,.24) 48%,rgba(93,31,130,.30)),
    rgba(26,13,35,.92);
  box-shadow:
    inset 0 0 20px rgba(223,115,255,.18),
    0 0 0 1px rgba(238,161,255,.12),
    0 0 18px rgba(194,72,255,.72),
    0 0 36px rgba(177,45,171,.28);
  animation:gmDmRowUnreadGlow 1.2s ease-in-out infinite;
}
.gm-dm-person.unread .gm-dm-person-copy b{
  color:#fff4ff;
  text-shadow:0 0 9px rgba(237,176,255,.88);
}
.gm-dm-person.unread .gm-dm-avatar{
  box-shadow:0 0 0 2px rgba(0,0,0,.65),0 0 14px rgba(216,91,255,.9);
}
.gm-dm-person.unread .gm-dm-badge{
  background:#c52f78;
  box-shadow:0 0 12px rgba(255,76,153,.85);
}
@keyframes gmDmRowUnreadGlow{
  0%,100%{filter:brightness(1);transform:translateZ(0)}
  50%{filter:brightness(1.16);box-shadow:inset 0 0 26px rgba(236,137,255,.28),0 0 0 1px rgba(248,196,255,.22),0 0 26px rgba(203,83,255,.96),0 0 48px rgba(188,53,184,.38)}
}
@media (prefers-reduced-motion: reduce){.gm-dm-person.unread{animation:none}}
.gm-dm-avatar{width:32px;height:32px;display:grid;place-items:center;overflow:hidden;border:2px solid var(--gm-dm-frame,#37d997);border-radius:50%;background:#10151a;color:#cdd3da;font-size:.55rem;font-style:normal;font-weight:900;box-shadow:0 0 0 2px rgba(0,0,0,.55)}
.gm-dm-avatar img{width:100%;height:100%;object-fit:cover}
.gm-dm-person-copy{min-width:0;display:flex;flex-direction:column;gap:2px}
.gm-dm-person-copy b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.56rem;letter-spacing:.045em;color:#d8dde2}
.gm-dm-person-copy small{font-size:.39rem;letter-spacing:.12em;color:#68727e}
.gm-dm-presence{width:7px;height:7px;border-radius:50%;background:#555d64}.gm-dm-presence.on{background:#36dd8c;box-shadow:0 0 7px rgba(54,221,140,.65)}
.gm-dm-badge{position:absolute;right:16px;top:5px;min-width:15px;height:15px;padding:0 4px;display:grid;place-items:center;border-radius:8px;background:#a72e62;color:#fff;font-size:.43rem}
.gm-dm-empty{margin:auto;padding:20px 8px;text-align:center;color:#606a75;font-size:.47rem;letter-spacing:.13em;line-height:1.7}.gm-dm-empty.thread{align-self:center}
.gm-dm-thread-head{display:grid;grid-template-columns:26px 34px 1fr auto;align-items:center;gap:7px;padding:7px 8px;border-bottom:1px solid rgba(255,255,255,.06)}
.gm-dm-thread-head>button{width:24px;height:28px;border:1px solid rgba(155,93,224,.32);background:#15101d;color:#c49be9;font-size:1rem;cursor:pointer}
.gm-dm-thread-head>.gm-dm-purge{width:auto;height:28px;padding:0 9px;border-color:rgba(229,53,76,.72);background:linear-gradient(180deg,rgba(103,18,31,.92),rgba(49,7,15,.96));color:#ff9aaa;font:900 .42rem var(--font-machine,ui-monospace,monospace);letter-spacing:.12em}
.gm-dm-thread-head>.gm-dm-purge:hover{border-color:#ff4964;background:linear-gradient(180deg,#861c31,#4d0a17);color:#fff;box-shadow:0 0 12px rgba(255,44,76,.22)}
.gm-dm-thread-head>div{display:flex;min-width:0;flex-direction:column}.gm-dm-thread-head b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.57rem;color:#eee}.gm-dm-thread-head small{font-size:.39rem;letter-spacing:.1em;color:#716b7a}
.gm-dm-messages{flex:1;min-height:0;overflow:auto;padding:8px;display:flex;flex-direction:column;gap:6px}
.gm-dm-msg{align-self:flex-start;max-width:88%;padding:6px 7px 14px;border:1px solid #34313a;border-radius:7px 7px 7px 2px;background:#14171b;position:relative}.gm-dm-msg.mine{align-self:flex-end;border-color:#684493;border-radius:7px 7px 2px 7px;background:linear-gradient(180deg,#2a1d39,#1a1323)}
.gm-dm-msg p{margin:0;font:500 .58rem/1.35 system-ui,'Segoe UI',sans-serif;color:#eef0f3;overflow-wrap:anywhere}.gm-dm-msg>span{position:absolute;right:6px;bottom:2px;font-size:.38rem;color:#737b84}
.gm-dm-compose{display:grid;grid-template-columns:1fr auto;gap:5px;padding:7px;border-top:1px solid rgba(255,255,255,.06)}
.gm-dm-compose textarea{resize:none;min-height:38px;max-height:72px;padding:7px 8px;border:1px solid #343a43;border-radius:5px;background:#090c10;color:#eee;font:500 .56rem/1.3 system-ui,'Segoe UI',sans-serif}.gm-dm-compose textarea:focus{outline:none;border-color:#8c55bf}
.gm-dm-compose button{padding:0 10px;border:1px solid #70439c;background:linear-gradient(180deg,#352046,#1c1227);color:#eee;font:900 .46rem var(--font-machine);letter-spacing:.1em;cursor:pointer}
.gm-dm-flash{padding:6px 8px;border-bottom:1px solid rgba(95,169,92,.3);background:rgba(41,74,40,.22);color:#9ed39b;font-size:.44rem}.gm-dm-flash.error{border-color:rgba(188,66,76,.35);background:rgba(83,24,30,.25);color:#e39aa0}
/* Readable sizes, matched to Battle Comms: 14.4px message text, 46px
   rounded composer pill with SEND inside it. */
.gm-dm-console>header{padding:12px 14px}
.gm-dm-console>header span{font-size:12px;letter-spacing:.18em}
.gm-dm-console>header small{font-size:10px}
.gm-dm-console>header>b{min-width:22px;height:22px;border-radius:11px;font-size:11px}
.gm-dm-roster{padding:8px}
.gm-dm-person{grid-template-columns:42px 1fr auto;gap:12px;padding:10px 12px}
.gm-dm-avatar{width:40px;height:40px;font-size:12px}
.gm-dm-person-copy{gap:3px}
.gm-dm-person-copy b{font:700 15px/1.2 'Segoe UI',system-ui,sans-serif;letter-spacing:.01em}
.gm-dm-person-copy small{font-size:10px}
.gm-dm-presence{width:9px;height:9px}
.gm-dm-badge{right:22px;top:8px;min-width:20px;height:20px;border-radius:10px;font-size:11px}
.gm-dm-empty{font-size:12px}
.gm-dm-thread-head{grid-template-columns:34px 42px 1fr auto;gap:10px;padding:10px 12px}
.gm-dm-thread-head>button{width:32px;height:34px;border-radius:7px;font-size:20px}
.gm-dm-thread-head>.gm-dm-purge{width:auto;height:34px;padding:0 13px;font:900 10px var(--font-machine,ui-monospace,monospace);letter-spacing:.14em}
.gm-dm-thread-head b{font:700 16px/1.2 'Segoe UI',system-ui,sans-serif}
.gm-dm-thread-head small{font-size:10px}
.gm-dm-messages{padding:14px 16px;gap:10px}
.gm-dm-msg{max-width:min(72%,720px);display:flex;align-items:flex-end;gap:10px;padding:7px 11px;border-radius:9px 9px 9px 4px}
.gm-dm-msg.mine{border-radius:9px 9px 4px 9px}
.gm-dm-msg p{font:500 14.4px/1.35 'Segoe UI',system-ui,-apple-system,sans-serif}
.gm-dm-msg.media{display:block;padding:4px 4px 16px;overflow:hidden}.gm-dm-gif{display:block;width:min(300px,100%);max-height:250px;object-fit:contain;border-radius:6px;background:#07080a}.gm-dm-msg.media p{padding:6px 7px 0}
.gm-dm-msg>span{position:static;flex:0 0 auto;padding-bottom:2px;white-space:nowrap;font:400 10px var(--font-machine,ui-monospace,monospace);color:#929ba6}
.gm-dm-flash{padding:9px 14px;font-size:12px}
.gm-dm-compose{display:block;padding:10px 16px 14px;border-top:1px solid rgba(255,255,255,.06)}
.gm-dm-media-tools{position:relative;display:flex;gap:5px;padding:7px 16px 0;border-top:1px solid rgba(255,255,255,.06)}.gm-dm-media-tools>button{height:28px;min-width:38px;border:1px solid #5e3b7e;border-radius:5px;background:#171020;color:#d9c2f3;font-weight:900}.gm-dm-emoji-picker,.gm-dm-gif-picker{position:absolute;z-index:8;left:16px;bottom:34px;width:min(340px,calc(100vw - 50px));padding:7px;border:1px solid #70439c;border-radius:7px;background:#0c0a10;box-shadow:0 12px 28px #000}.gm-dm-emoji-picker{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.gm-dm-emoji-picker button{padding:4px;border:0;background:transparent;font-size:18px}.gm-dm-gif-picker form{display:flex;gap:4px}.gm-dm-gif-picker input{min-width:0;flex:1;padding:6px;border:1px solid #3f3549;background:#07080a;color:#fff}.gm-dm-gif-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;max-height:220px;overflow:auto;margin-top:6px}.gm-dm-gif-grid button{height:65px;padding:0;border:1px solid #392747;background:#08070a;overflow:hidden}.gm-dm-gif-grid img{width:100%;height:100%;object-fit:cover}
.gm-dm-public-composer{position:relative;display:grid;grid-template-columns:38px 38px minmax(0,1fr) 38px;align-items:center;gap:6px;padding:9px 14px 13px;border-top:1px solid rgba(255,255,255,.06)}.gm-dm-public-composer>button,.gm-dm-attachment-wrap>button{width:38px;height:38px;border:1px solid #5e3b7e;border-radius:50%;background:#171020;color:#d9c2f3}.gm-dm-public-composer .gm-dm-compose{padding:0;border:0}.gm-dm-attachment-wrap{position:relative}.gm-dm-attachment-menu{position:absolute;z-index:10;left:0;bottom:45px;width:220px;padding:5px;border:1px solid #68458a;border-radius:8px;background:#0b0910;box-shadow:0 14px 32px #000}.gm-dm-attachment-menu button{width:100%;padding:9px;border:0;border-bottom:1px solid #29222f;background:transparent;color:#e9dcf3;text-align:left}.gm-dm-reply-preview{margin:0 14px;padding:7px 9px;border-left:3px solid #9b5de0;background:#17121f;color:#bba9c7;font-size:12px}.gm-dm-reply-preview button{float:right}.gm-dm-poll-maker{display:grid;gap:5px;margin:0 14px 9px;padding:9px;border:1px solid #56396e;background:#0d0b10}.gm-dm-poll-maker input{padding:7px;background:#07080a;border:1px solid #37313e;color:#fff}.gm-dm-actions,.gm-dm-reactions{display:flex;gap:3px;margin-top:4px;opacity:.3}.gm-dm-msg:hover :is(.gm-dm-actions,.gm-dm-reactions){opacity:1}.gm-dm-actions button,.gm-dm-reactions button{border:1px solid #443452;border-radius:9px;background:#15101c;color:#ccb8da}.gm-dm-reply-context{padding:4px 6px;border-left:2px solid #9b5de0;color:#a897b5;font-size:10px}.gm-dm-poll{display:grid;gap:4px;min-width:220px}.gm-dm-poll button{display:flex;justify-content:space-between;padding:6px;border:1px solid #473656;background:#130f19;color:#eee}.gm-dm-sticker{width:130px;max-height:130px;object-fit:contain}.gm-dm-emoji-picker .commander-emoji-picker-icon{width:22px;height:22px;object-fit:contain}
.gm-dm-compose-shell{display:flex;align-items:center;gap:8px;min-height:46px;padding:4px 5px 4px 16px;border:1px solid rgba(112,123,136,.5);border-radius:23px;background:linear-gradient(180deg,rgba(29,34,41,.98),rgba(15,18,23,.996));box-sizing:border-box}
.gm-dm-compose-shell:focus-within{border-color:rgba(155,93,224,.7);box-shadow:0 0 0 3px rgba(155,93,224,.14)}
.gm-dm-compose textarea{flex:1;min-width:0;min-height:36px;max-height:110px;padding:8px 0;border:0;border-radius:0;background:transparent;color:#edf0f4;font:400 14.4px/19.44px 'Segoe UI','Noto Sans',Arial,system-ui,sans-serif}
.gm-dm-compose textarea::placeholder{color:#7f8893}
.gm-dm-compose textarea:focus{outline:none}
.gm-dm-compose button{flex:0 0 auto;height:36px;padding:0 18px;border:1px solid #8a55c4;border-radius:18px;background:linear-gradient(180deg,#5b2f86,#3a1d58);color:#fff;font:800 12px var(--font-machine,ui-monospace,monospace);letter-spacing:.14em;cursor:pointer}
.gm-dm-compose button:hover{background:linear-gradient(180deg,#6d3aa0,#46226b)}
body:not(.room-mode-casual) .gm-dm-console{display:none !important}
@media(max-height:760px){body.room-mode-casual #gm-panel .gm-module-chat .gm-chat-panel.gm-dm-open > #gm-dm-console{min-height:0;max-height:none}}

/* Keep the unread counter inside the clipped chat-panel header. The legacy
   attention rule in asoc.css lifts it above the tab, where overflow:hidden
   cuts the badge in half. */
body.room-mode-casual #gm-panel .gm-module-chat #gm-dm-toggle.has-unread::after{
  top:3px !important;
  right:6px !important;
  z-index:9;
}
.gm-dm-edit-preview{margin:0 14px;padding:7px 9px;border-left:3px solid #42d9ff;background:#101a21;color:#9bdff0;font-size:12px}.gm-dm-edit-preview button{float:right}.gm-dm-attachment-menu button span{display:grid;font-weight:800}.gm-dm-attachment-menu button small{color:#887d92;font-size:9px}.gm-dm-public-composer{flex:0 0 auto}.gm-dm-public-composer .gm-dm-compose{display:block;min-width:0}.gm-dm-public-composer .gm-dm-mic{display:grid;place-items:center}.gm-dm-msg.media{overflow:visible}
.gm-dm-reactions{position:relative}.gm-dm-reaction-picker{position:absolute;z-index:12;left:0;bottom:28px;display:grid;grid-template-columns:repeat(7,28px);gap:3px;padding:7px;border:1px solid #70439c;border-radius:8px;background:#0c0a10;box-shadow:0 12px 28px #000}.gm-dm-reaction-picker button{width:28px;height:28px;padding:2px}

/* Private Channels deliberately reuse the Battle Comms composer component:
   one capsule, attachments + wolf inside the left edge, voice inside right. */
.gm-dm-public-composer{position:relative;display:block;padding:10px 16px 14px;border-top:1px solid rgba(255,255,255,.06)}
.gm-dm-public-composer .gm-dm-compose{display:block;width:100%;padding:0;border:0;background:none}
.gm-dm-public-composer .gm-composer-shell{position:relative;display:flex;align-items:center;width:100%;min-width:0;min-height:46px;padding:4px 7px;gap:2px;border:1px solid rgba(112,123,136,.50);border-radius:23px;background:linear-gradient(180deg,rgba(29,34,41,.98),rgba(15,18,23,.995));box-shadow:inset 0 1px 0 rgba(255,255,255,.045),inset 0 -1px 0 rgba(0,0,0,.58),0 3px 12px rgba(0,0,0,.20);box-sizing:border-box;transition:border-color .15s ease,box-shadow .15s ease}
.gm-dm-public-composer .gm-composer-shell:focus-within{border-color:rgba(154,96,207,.72);box-shadow:inset 0 1px 0 rgba(255,255,255,.05),0 0 0 1px rgba(155,93,224,.12),0 0 14px rgba(115,55,166,.13)}
.gm-dm-public-composer .gm-attachment-wrap{position:relative;flex:0 0 36px;width:36px;height:36px}
.gm-dm-public-composer :is(.gm-attach-toggle,.gm-emoji-toggle){position:static;inset:auto;transform:none;display:inline-flex;align-items:center;justify-content:center;flex:0 0 36px;width:36px;height:36px;min-width:36px;min-height:36px;margin:0;padding:0;border:0;border-radius:50%;background:transparent;color:#a7aeb8;cursor:pointer;transition:background .13s ease,color .13s ease,transform .13s ease}
.gm-dm-public-composer .gm-attach-toggle{font:400 1.72rem/1 Arial,sans-serif}
.gm-dm-public-composer .gm-emoji-toggle{font-family:"Segoe UI Emoji","Apple Color Emoji","Noto Color Emoji",sans-serif;font-size:1.18rem;line-height:1}
.gm-dm-public-composer :is(.gm-attach-toggle,.gm-emoji-toggle):hover,.gm-dm-public-composer .gm-attach-toggle[aria-expanded="true"]{color:#f6f2fa;background:rgba(155,93,224,.17)}
.gm-dm-public-composer :is(.gm-attach-toggle,.gm-emoji-toggle):active{transform:scale(.94)}
.gm-dm-public-composer [data-gm-dm-input]{position:static;flex:1 1 auto;width:auto;min-width:0;min-height:36px;max-width:none;padding:8px 9px;border:0;border-radius:0;outline:0;background:transparent;box-shadow:none;color:#edf0f4;font:400 14.4px/1.35 'Segoe UI','Noto Sans',Arial,system-ui,sans-serif;box-sizing:border-box;white-space:pre-wrap;overflow-wrap:anywhere}
.gm-dm-public-composer [data-gm-dm-input]:empty::before{content:attr(data-placeholder);color:#7f8791;pointer-events:none}
.gm-dm-public-composer .gm-voice-btn svg{display:block;margin:auto}
.gm-dm-public-composer .gm-dm-attachment-menu{left:0;bottom:44px;width:280px;padding:6px}
.gm-dm-public-composer .gm-dm-attachment-menu .gm-attachment-option{display:flex;align-items:center;width:100%;padding:9px 11px;border:0;border-bottom:1px solid #29222f;background:transparent;color:#e9dcf3;text-align:left}
.gm-dm-public-composer .gm-dm-attachment-menu .gm-attachment-option span{display:grid;font-weight:800}.gm-dm-public-composer .gm-dm-attachment-menu .gm-attachment-option small{color:#887d92;font-size:9px;font-weight:500}
.gm-dm-public-composer>.gm-dm-emoji-picker,.gm-dm-public-composer>.gm-dm-gif-picker{left:16px;bottom:66px}
