/* FP Digital Portal 11 — desktop app sync, communication repair, and denser workspace */

:root{
  --v11-drop-glow: color-mix(in srgb,var(--accent) 46%,transparent);
  --v11-card: color-mix(in srgb,var(--panel2) 90%,black);
}

/* Use the full remaining viewport without stacking page-level scroll areas. */
#view-messages.active,
#view-voice.active{
  height:calc(100dvh - var(--topbar,76px));
  min-height:0!important;
  padding:12px!important;
  overflow:hidden!important;
  display:flex!important;
  flex-direction:column!important;
}
#view-messages>.section-head,
#view-voice>.section-head{
  flex:0 0 auto!important;
  margin:0 0 10px!important;
  padding:4px 6px!important;
}
#view-messages>.section-head h2,
#view-voice>.section-head h2{font-size:clamp(1.25rem,2vw,2rem)!important}
#view-messages>.section-head p,
#view-voice>.section-head p{max-width:72ch!important;margin-top:4px!important;line-height:1.45!important}

.messages-shell-v10,
.voice-discord-shell-v9{
  flex:1 1 auto!important;
  min-height:0!important;
  height:auto!important;
  margin:0!important;
  border-radius:18px!important;
}
.messages-shell-v10{
  grid-template-columns:76px minmax(0,1fr) minmax(180px,220px)!important;
}
.dm-conversation-panel-v10,
.voice-stage-v9{min-height:0!important;overflow:hidden!important}
.chat-message-list{min-height:0!important;overflow:auto!important;scrollbar-gutter:stable}
.chat-compose-wrap{position:relative!important;z-index:4!important;padding:8px 12px 10px!important}
.chat-composer-v2{min-height:54px!important;align-items:end!important}
.chat-composer-v2 textarea{
  min-height:42px!important;
  max-height:140px!important;
  text-align:left!important;
  direction:ltr!important;
  unicode-bidi:plaintext!important;
  padding:11px 12px!important;
  overflow-y:auto!important;
}
.chat-message-row,
.chat-message-row .message-content,
.chat-message-row .message-body{direction:ltr!important;text-align:left!important}
.chat-message-row .message-body{max-width:min(82ch,100%)!important;margin-right:auto!important}
.chat-message-row.compact .message-content{grid-column:2!important}

/* DM avatar rail: one consistent square/circle source used everywhere. */
.dm-avatar-list-v10{display:flex!important;flex-direction:column!important;align-items:center!important;gap:9px!important}
.dm-orb-button-v10{width:52px!important;height:52px!important;min-width:52px!important;min-height:52px!important;padding:0!important;overflow:visible!important}
.dm-orb-avatar-v10,
.dm-orb-avatar-v10.chat-dm-avatar,
.dm-header-avatar-v10{
  width:46px!important;height:46px!important;border-radius:15px!important;overflow:hidden!important;
  display:grid!important;place-items:center!important;
}
.dm-orb-avatar-v10 img,
.dm-header-avatar-v10 img,
.chat-avatar img,
.chat-member-avatar img,
.message-avatar img{
  width:100%!important;height:100%!important;display:block!important;object-fit:cover!important;border-radius:inherit!important;
}
.dm-orb-button-v10.has-unread .dm-orb-avatar-v10{
  animation:v11DmPulse 1.2s ease-in-out infinite!important;
  box-shadow:0 0 0 3px var(--v11-drop-glow),0 0 26px var(--v11-drop-glow)!important;
}
@keyframes v11DmPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.07)}}

/* Drag-and-drop file target. */
#view-messages.dm-file-ready-v11 .dm-conversation-panel-v10,
#view-messages.dm-file-over-v11 .dm-conversation-panel-v10{
  position:relative!important;
}
#view-messages.dm-file-ready-v11 .dm-conversation-panel-v10::after,
#view-messages.dm-file-over-v11 .dm-conversation-panel-v10::after{
  content:"Drop files to attach";
  pointer-events:none;
  position:absolute;inset:12px;z-index:80;
  display:grid;place-items:center;
  border:2px dashed color-mix(in srgb,var(--accent) 70%,white);
  border-radius:18px;
  background:color-mix(in srgb,var(--panel) 80%,transparent);
  color:var(--text);font:800 1rem "Space Grotesk",sans-serif;
  letter-spacing:.04em;
  opacity:0;transform:scale(.985);transition:.16s ease;
}
#view-messages.dm-file-over-v11 .dm-conversation-panel-v10::after{
  opacity:1;transform:none;box-shadow:inset 0 0 45px var(--v11-drop-glow),0 0 35px var(--v11-drop-glow);
}
#view-messages.dm-file-over-v11 .dm-conversation-panel-v10>*{filter:saturate(.75) brightness(.72)}

/* Voice cards and context menu. */
.voice-participant-grid-v103{
  align-content:start!important;
  overflow:auto!important;
  padding:14px!important;
  grid-template-columns:repeat(auto-fit,minmax(230px,1fr))!important;
}
.voice-participant-card-v104{min-height:210px!important;cursor:default!important}
.voice-participant-card-v104:focus-within{outline:2px solid var(--accent)!important;outline-offset:-2px!important}
.voice-participant-card-v104.is-speaking,
.voice-participant-card-v104.speaking{
  box-shadow:0 0 0 2px var(--green),0 0 28px color-mix(in srgb,var(--green) 40%,transparent)!important;
}
.voice-participant-settings-panel-v107{z-index:2300!important;max-height:min(560px,calc(100dvh - 28px))!important;overflow:auto!important}
.voice-participant-settings-panel-v107::before{
  content:"Participant controls";display:block;padding:8px 12px 0;color:var(--accent);font-size:.58rem;font-weight:900;letter-spacing:.12em;text-transform:uppercase;
}

/* Stream previews remain inline. Fullscreen is opt-in only. */
.voice-inline-screen-v107,
.voice-participant-inline-stream-v107,
.voice-participant-card-v104 video{
  position:relative!important;
  width:100%!important;height:100%!important;min-height:150px!important;
  object-fit:contain!important;background:#020307!important;border-radius:14px!important;
}
.voice-stream-inline-overlay-v11{
  position:absolute;inset:auto 10px 10px 10px;z-index:8;
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  opacity:0;transform:translateY(5px);transition:.16s ease;pointer-events:none;
}
.voice-participant-card-v104:hover .voice-stream-inline-overlay-v11,
.voice-participant-card-v104:focus-within .voice-stream-inline-overlay-v11{opacity:1;transform:none;pointer-events:auto}
.voice-stream-inline-overlay-v11 button{
  border:1px solid rgba(255,255,255,.18);border-radius:10px;background:rgba(1,3,8,.86);color:#fff;padding:7px 9px;font-size:.62rem;font-weight:800;backdrop-filter:blur(12px);
}

/* Screen viewer controls are an overlay over the stream and auto-hide. */
#voiceScreenStage{position:relative!important;min-height:0!important}
#voiceScreenStage .voice-stream-toolbar-v103{
  position:absolute!important;left:12px;right:12px;top:12px;z-index:30!important;
  border:1px solid rgba(255,255,255,.15)!important;border-radius:14px!important;
  background:rgba(3,5,12,.76)!important;backdrop-filter:blur(16px)!important;
  transition:opacity .2s ease,transform .2s ease!important;
}
#voiceScreenStage.stream-controls-hidden-v11 .voice-stream-toolbar-v103,
#voiceScreenStage.stream-controls-hidden-v11 .voice-stream-bottom-v103{
  opacity:0!important;transform:translateY(-8px)!important;pointer-events:none!important;
}
#voiceScreenStage .voice-stream-bottom-v103{
  position:absolute!important;left:12px;right:12px;bottom:12px;z-index:30!important;
  border-radius:14px!important;background:rgba(3,5,12,.76)!important;backdrop-filter:blur(16px)!important;
  transition:opacity .2s ease,transform .2s ease!important;
}
#voiceScreenStage:fullscreen,
#voiceScreenStage.is-fullscreen-v11{
  width:100vw!important;height:100vh!important;max-width:none!important;max-height:none!important;margin:0!important;border:0!important;border-radius:0!important;background:#000!important;
}
#voiceScreenStage:fullscreen video,
#voiceScreenStage.is-fullscreen-v11 video{width:100%!important;height:100%!important;object-fit:contain!important}

/* Compact portal-app marker. */
.fp-desktop-badge-v11{
  display:inline-flex;align-items:center;gap:6px;padding:5px 8px;border:1px solid var(--border);border-radius:999px;background:var(--surface);font-size:.56rem;color:var(--muted);
}
.fp-desktop-badge-v11 i{width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 10px var(--green)}

@media(max-width:1100px){
  .messages-shell-v10{grid-template-columns:66px minmax(0,1fr)!important}
  .dm-profile-panel-v10{display:none!important}
  .voice-discord-shell-v9{grid-template-columns:210px minmax(0,1fr)!important}
  .voice-info-rail-v9{display:none!important}
}
@media(max-width:820px){
  #view-messages.active,#view-voice.active{height:calc(100dvh - 68px)!important;padding:6px!important}
  #view-messages>.section-head,#view-voice>.section-head{display:none!important}
  .messages-shell-v10{grid-template-columns:1fr!important;border-radius:12px!important}
  .dm-orbit-rail-v10{
    position:absolute!important;left:0;right:0;top:0;height:62px!important;z-index:12!important;
    display:flex!important;flex-direction:row!important;align-items:center!important;overflow-x:auto!important;overflow-y:hidden!important;
    border-right:0!important;border-bottom:1px solid var(--border)!important;
  }
  .dm-avatar-list-v10{flex-direction:row!important}
  .dm-conversation-panel-v10{padding-top:62px!important}
  .voice-discord-shell-v9{grid-template-columns:1fr!important}
  .voice-channel-rail-v9{display:none!important}
  .voice-participant-grid-v103{grid-template-columns:1fr!important;padding:8px!important}
}

/* V11.0.4 voice opt-in, music quality, and join/answer audio */
.music-quality-control-v103{margin-top:10px;padding:10px 11px;border:1px solid var(--border);border-radius:12px;background:color-mix(in srgb,var(--surface) 82%,transparent)}
.music-quality-control-v103 label{display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--text);font-size:.62rem;font-weight:700}
.music-quality-control-v103 select{min-width:126px;padding:7px 9px;border:1px solid var(--border);border-radius:9px;background:var(--panel);color:var(--text);font:inherit}
.music-quality-control-v103 small{display:block;margin-top:6px;color:var(--muted);font-size:.51rem;line-height:1.45}
.voice-room-button-v9:not(.active){cursor:pointer}
