/* FP Digital Portal 10.3 — Discord-style voice studio, room chat, stream controls, and responsive message workspace */

/* Messages should occupy the available portal canvas at normal zoom. */
#view-messages.active{display:flex!important;flex-direction:column;height:calc(100dvh - 40px)!important;min-height:0!important;overflow:hidden!important}
.messages-page-head-v10{padding-block:2px!important;margin-bottom:8px!important}
.messages-page-head-v10 h2{font-size:clamp(1.45rem,2vw,2.2rem)!important}.messages-page-head-v10 p{max-width:760px;line-height:1.45}
.messages-shell-v10{flex:1!important;height:auto!important;min-height:0!important;grid-template-columns:78px minmax(0,1fr) minmax(190px,228px)!important}
.dm-conversation-panel-v10{display:flex!important;flex-direction:column!important;min-width:0!important;min-height:0!important}
.dm-conversation-panel-v10 .chat-message-list{flex:1!important;min-height:0!important;overflow:auto!important}
.dm-profile-panel-v10{min-width:0!important}.chat-compose-wrap{flex:0 0 auto!important}
@media(max-width:1320px){.messages-shell-v10{grid-template-columns:76px minmax(0,1fr)!important}.dm-profile-panel-v10{display:none!important}}
@media(max-width:760px){
  #view-messages.active{height:calc(100dvh - 20px)!important}
  .messages-page-head-v10{display:none!important}
  .messages-shell-v10{display:flex!important;flex-direction:column!important;border-radius:14px!important}
  .dm-orbit-rail-v10{width:100%!important;min-height:70px!important;max-height:84px!important;flex-direction:row!important;overflow-x:auto!important;overflow-y:hidden!important;padding:8px!important;border-right:0!important;border-bottom:1px solid var(--border)!important}
  .dm-rail-top-v10,.dm-avatar-list-v10{display:flex!important;flex-direction:row!important;width:auto!important}.dm-rail-divider-v10{width:1px!important;height:36px!important}.dm-rail-spacer-v10{display:none!important}
  .dm-orb-tooltip-v10{display:none!important}.dm-conversation-panel-v10{flex:1!important;min-height:0!important}
}

/* Voice stage layout */
.voice-discord-shell-v9{position:relative;min-height:620px}
.voice-stage-v9{position:relative;overflow:hidden;background:radial-gradient(circle at 50% 15%,color-mix(in srgb,var(--accent) 8%,transparent),transparent 46%),var(--panel)}
.voice-participant-grid-v103{align-content:start!important;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))!important;padding:16px!important;gap:12px!important}
.voice-participant-card-v9{min-height:190px!important;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}
.voice-participant-card-v9:hover{transform:translateY(-2px)}
.voice-member-mini-v9{display:grid!important;grid-template-columns:8px minmax(0,1fr)!important;gap:8px!important;align-items:center!important}
.voice-member-volume-v103{grid-column:1/-1;display:grid;grid-template-columns:auto minmax(70px,1fr) 34px;gap:7px;align-items:center;margin:5px 0 1px 16px;color:var(--muted);font-size:.47rem}
.voice-member-volume-v103 input{width:100%;accent-color:var(--accent)}.voice-member-volume-v103 output{text-align:right;font-variant-numeric:tabular-nums;color:var(--text)}

/* Discord-like screen-share tiles */
.voice-stream-tile-v103{position:relative;min-height:220px;border:1px solid var(--border);border-radius:18px;overflow:hidden;background:#05070c;cursor:pointer;isolation:isolate}
.voice-stream-tile-v103.speaking{border-color:var(--green);box-shadow:0 0 0 2px color-mix(in srgb,var(--green) 16%,transparent)}
.voice-stream-thumb-v103{position:absolute;inset:0}.voice-stream-thumb-v103 video{width:100%;height:100%;object-fit:cover;filter:brightness(.72);transition:.2s ease}.voice-stream-tile-v103:hover video{filter:brightness(.48);transform:scale(1.015)}
.voice-stream-placeholder-v103{position:absolute;inset:0;display:grid;place-items:center;background:linear-gradient(145deg,#0b1020,#11152a);color:var(--muted);font-weight:800}
.voice-stream-tile-top-v103{position:absolute;z-index:3;left:10px;right:10px;top:10px;display:flex;align-items:center;justify-content:space-between;gap:8px}.voice-stream-live-v103{padding:5px 8px;border-radius:999px;background:var(--danger);color:#fff;font-size:.48rem;font-weight:900;letter-spacing:.08em}.voice-stream-quality-v103{padding:5px 8px;border:1px solid rgba(255,255,255,.18);border-radius:999px;background:rgba(0,0,0,.55);color:#fff;font-size:.45rem}
.voice-stream-tile-overlay-v103{position:absolute;z-index:2;inset:0;display:grid;place-items:center;background:linear-gradient(transparent 18%,rgba(0,0,0,.24),rgba(0,0,0,.78));opacity:0;transition:.18s ease}.voice-stream-tile-v103:hover .voice-stream-tile-overlay-v103{opacity:1}
.voice-stream-watch-v103{padding:11px 17px;border:1px solid rgba(255,255,255,.28);border-radius:11px;background:rgba(20,20,28,.82);color:#fff;font-weight:900;box-shadow:0 10px 30px rgba(0,0,0,.32)}
.voice-stream-tile-foot-v103{position:absolute;z-index:3;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:28px 12px 11px;background:linear-gradient(transparent,rgba(0,0,0,.9));color:#fff}.voice-stream-tile-foot-v103 b{font-size:.63rem}.voice-stream-tile-foot-v103 small{display:block;margin-top:2px;color:rgba(255,255,255,.72);font-size:.47rem}.voice-stream-tile-foot-v103 button{border:1px solid rgba(255,255,255,.2);border-radius:8px;background:rgba(0,0,0,.45);color:#fff;padding:6px 8px;font-size:.48rem}

/* Full shared-screen viewer */
.voice-stream-viewer-v103{position:absolute!important;inset:62px 0 72px!important;z-index:20!important;display:grid;grid-template-rows:auto minmax(0,1fr) auto;background:#020409!important;border:1px solid var(--border);box-shadow:0 24px 80px rgba(0,0,0,.5)}
.voice-stream-viewer-v103[hidden]{display:none!important}.voice-stream-toolbar-v103{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 10px;border-bottom:1px solid rgba(255,255,255,.1);background:rgba(7,8,13,.96);color:#fff;cursor:default}.voice-stream-ident-v103{display:flex;align-items:center;gap:9px;min-width:0}.voice-stream-ident-v103>i{width:9px;height:9px;border-radius:50%;background:var(--green);box-shadow:0 0 12px var(--green)}.voice-stream-ident-v103 b,.voice-stream-ident-v103 small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.voice-stream-ident-v103 b{font-size:.62rem}.voice-stream-ident-v103 small{margin-top:2px;color:#9ba4b5;font-size:.47rem}
.voice-stream-toolbar-actions-v103{display:flex;align-items:center;gap:5px}.voice-stream-toolbar-actions-v103 label{display:flex;align-items:center;gap:6px;padding:4px 7px;border:1px solid rgba(255,255,255,.13);border-radius:8px;background:rgba(255,255,255,.05);font-size:.43rem}.voice-stream-toolbar-actions-v103 select,.voice-stream-toolbar-actions-v103 button{height:30px;border:1px solid rgba(255,255,255,.16);border-radius:8px;background:#151722;color:#fff;padding:0 8px;font-size:.48rem}.voice-stream-toolbar-actions-v103 label select{border:0;background:transparent;padding:0}.voice-stream-toolbar-actions-v103 button:hover{background:#25293a;border-color:var(--accent)}
.voice-stream-video-host-v103{min-height:0;display:grid;place-items:center;overflow:hidden;background:#000}.voice-stream-video-host-v103 video{width:100%;height:100%;object-fit:contain}.voice-stream-viewer-v103.fill .voice-stream-video-host-v103 video{object-fit:cover}
.voice-stream-footer-v103{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:7px 10px;border-top:1px solid rgba(255,255,255,.09);background:#090a10;color:#aab1c0;font-size:.46rem}.voice-stream-footer-v103 label{display:flex;align-items:center;gap:7px}.voice-stream-footer-v103 input{width:100px;accent-color:var(--accent)}
.voice-stream-viewer-v103.minimized{position:fixed!important;inset:auto 22px 22px auto!important;width:min(440px,calc(100vw - 32px));height:auto;aspect-ratio:16/10;border-radius:16px;overflow:hidden;resize:both;min-width:280px;min-height:200px;max-width:80vw;max-height:75vh;z-index:4000!important;box-shadow:0 24px 90px rgba(0,0,0,.65)}.voice-stream-viewer-v103.minimized .voice-stream-toolbar-v103{cursor:move}.voice-stream-viewer-v103.minimized .voice-stream-footer-v103{display:none}.voice-stream-viewer-v103.minimized .voice-stream-toolbar-actions-v103 label{display:none}
.voice-stream-viewer-v103:fullscreen{inset:0!important;width:100vw!important;height:100vh!important;border:0!important;border-radius:0!important}.voice-stream-viewer-v103:fullscreen .voice-stream-video-host-v103 video{object-fit:contain}

/* In-room chat drawer */
.voice-room-chat-v103{position:absolute;z-index:30;top:62px;right:0;bottom:72px;width:min(340px,42%);display:grid;grid-template-rows:auto minmax(0,1fr) auto;border-left:1px solid var(--border);background:color-mix(in srgb,var(--panel2) 96%,#000 4%);box-shadow:-20px 0 60px rgba(0,0,0,.28);animation:voiceChatInV103 .18s ease}.voice-room-chat-v103[hidden]{display:none!important}@keyframes voiceChatInV103{from{transform:translateX(20px);opacity:0}to{transform:none;opacity:1}}
.voice-room-chat-v103 header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px;border-bottom:1px solid var(--border)}.voice-room-chat-v103 header b,.voice-room-chat-v103 header small{display:block}.voice-room-chat-v103 header b{font-size:.66rem}.voice-room-chat-v103 header small{margin-top:3px;color:var(--muted);font-size:.47rem}.voice-room-chat-v103 header button{width:28px;height:28px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text)}
.voice-room-chat-list-v103{min-height:0;overflow:auto;padding:11px;display:flex;flex-direction:column;gap:9px}.voice-room-chat-empty-v103{margin:auto;padding:24px;text-align:center;color:var(--muted);font-size:.56rem;line-height:1.55}.voice-room-chat-message-v103{display:grid;grid-template-columns:30px minmax(0,1fr);gap:8px}.voice-room-chat-message-v103 .avatar{display:grid;place-items:center;width:30px;height:30px;border-radius:10px;overflow:hidden;background:linear-gradient(135deg,var(--accent),var(--accent2));font-size:.48rem;font-weight:900}.voice-room-chat-message-v103 .avatar img{width:100%;height:100%;object-fit:cover}.voice-room-chat-message-v103 b{font-size:.55rem}.voice-room-chat-message-v103 time{margin-left:5px;color:var(--muted);font-size:.43rem}.voice-room-chat-message-v103 p{margin-top:3px;color:var(--text);font-size:.56rem;line-height:1.45;overflow-wrap:anywhere}
.voice-room-chat-form-v103{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px;padding:10px;border-top:1px solid var(--border)}.voice-room-chat-form-v103 input{min-width:0;padding:10px 11px;border:1px solid var(--border);border-radius:10px;background:var(--surface);color:var(--text);font-size:.58rem}.voice-room-chat-form-v103 button{padding:0 12px;border:0;border-radius:10px;background:linear-gradient(135deg,var(--accent),var(--accent2));color:var(--logo-ink);font-weight:900;font-size:.52rem}

/* Discord-inspired call controls */
.voice-control-dock-v103{position:relative!important;z-index:35!important;gap:7px!important;padding:9px 12px!important;background:color-mix(in srgb,var(--panel2) 96%,#000 4%)!important}.voice-control-dock-v103 .voice-control-v9{position:relative;min-width:52px!important;width:52px;height:48px;padding:0!important;border-radius:14px!important}.voice-control-dock-v103 .voice-control-v9 span{font-size:.82rem}.voice-control-dock-v103 .voice-control-v9 small{display:none}.voice-control-dock-v103 .voice-control-v9:after{content:attr(data-tooltip);position:absolute;left:50%;bottom:calc(100% + 8px);transform:translateX(-50%) translateY(4px);padding:6px 8px;border:1px solid var(--border);border-radius:7px;background:#11131c;color:#fff;font-size:.45rem;white-space:nowrap;opacity:0;pointer-events:none;transition:.14s ease}.voice-control-dock-v103 .voice-control-v9:hover:after{opacity:1;transform:translateX(-50%) translateY(0)}.voice-control-dock-v103 .voice-control-v9.leave{margin-left:8px;background:#e13e48!important;border-color:#e13e48!important}

/* Voice settings */
.voice-settings-modal-v103{width:min(760px,calc(100vw - 30px))!important;max-height:min(88vh,850px);display:flex;flex-direction:column}.voice-settings-scroll-v103{min-height:0;overflow:auto;padding-right:4px}.voice-settings-section-v103{margin:10px 0;padding:13px;border:1px solid var(--border);border-radius:15px;background:var(--surface)}.voice-settings-section-v103>header{margin-bottom:10px}.voice-settings-section-v103>header b,.voice-settings-section-v103>header small{display:block}.voice-settings-section-v103>header b{font-size:.67rem}.voice-settings-section-v103>header small{margin-top:3px;color:var(--muted);font-size:.5rem}.voice-toggle-grid-v103{display:grid;grid-template-columns:1fr 1fr;gap:8px}.voice-toggle-grid-v103 label{display:flex;align-items:flex-start;gap:9px;padding:10px;border:1px solid var(--border);border-radius:11px;background:var(--panel2);cursor:pointer}.voice-toggle-grid-v103 label.enhanced{grid-column:1/-1;border-color:color-mix(in srgb,var(--accent) 42%,var(--border))}.voice-toggle-grid-v103 input{margin-top:2px;accent-color:var(--accent)}.voice-toggle-grid-v103 b,.voice-toggle-grid-v103 small{display:block}.voice-toggle-grid-v103 b{font-size:.57rem}.voice-toggle-grid-v103 small{margin-top:3px;color:var(--muted);font-size:.46rem;line-height:1.4}.voice-processing-status-v103{margin-top:9px;padding:8px 10px;border-radius:9px;background:color-mix(in srgb,var(--accent) 8%,var(--panel2));color:var(--muted);font-size:.49rem}

@media(max-width:1000px){
  .voice-room-chat-v103{width:min(380px,72%)}.voice-stream-toolbar-actions-v103 label span{display:none}.voice-stream-viewer-v103{inset:62px 0 68px!important}
}
@media(max-width:720px){
  .voice-discord-shell-v9{min-height:calc(100dvh - 120px)!important}.voice-stage-v9{min-height:520px!important}.voice-participant-grid-v103{grid-template-columns:1fr!important;padding:9px!important}.voice-stream-tile-v103{min-height:180px}.voice-room-chat-v103{position:fixed;inset:auto 8px 76px 8px;width:auto;height:min(62vh,520px);border:1px solid var(--border);border-radius:16px;overflow:hidden;z-index:4200}.voice-stream-viewer-v103{position:fixed!important;inset:58px 8px 78px!important;border-radius:14px;z-index:4100!important}.voice-stream-viewer-v103.minimized{inset:auto 8px 82px auto!important;width:calc(100vw - 16px);height:auto;min-width:0;resize:none}.voice-stream-toolbar-v103{align-items:flex-start}.voice-stream-toolbar-actions-v103{flex-wrap:wrap;justify-content:flex-end}.voice-stream-toolbar-actions-v103 label{display:none}.voice-stream-footer-v103{flex-direction:column;align-items:flex-start}.voice-control-dock-v103{justify-content:flex-start!important;overflow-x:auto!important}.voice-toggle-grid-v103{grid-template-columns:1fr}.voice-toggle-grid-v103 label.enhanced{grid-column:auto}
}

/* Portal 10.3.1 finishing pass */
.voice-control-dock-v103 .voice-control-v9 em{position:absolute;right:-3px;top:-4px;display:grid;place-items:center;min-width:17px;height:17px;padding:0 4px;border:2px solid var(--panel2);border-radius:999px;background:var(--danger);color:#fff;font-size:.42rem;font-style:normal;font-weight:900}
.voice-control-dock-v103 .voice-control-v9.has-unread{border-color:var(--accent)!important;box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 20%,transparent),0 0 22px color-mix(in srgb,var(--accent) 30%,transparent);animation:voiceUnreadPulseV103 1.4s ease-in-out infinite}
@keyframes voiceUnreadPulseV103{50%{transform:translateY(-2px);filter:brightness(1.25)}}
.voice-quality-note-v103{margin:10px 0 0;padding:9px 11px;border:1px solid color-mix(in srgb,var(--accent) 24%,var(--border));border-radius:10px;background:color-mix(in srgb,var(--accent) 6%,var(--panel2));color:var(--muted);font-size:.49rem;line-height:1.5}
.voice-stream-viewer-v103.minimized .voice-stream-toolbar-v103{touch-action:none;user-select:none}
.voice-stream-viewer-v103.minimized{transition:box-shadow .18s ease,border-color .18s ease}.voice-stream-viewer-v103.minimized:hover{border-color:color-mix(in srgb,var(--accent) 52%,var(--border));box-shadow:0 28px 100px rgba(0,0,0,.72),0 0 0 1px color-mix(in srgb,var(--accent) 18%,transparent)}
.voice-stream-tile-v103 button:focus-visible,.voice-stream-toolbar-v103 button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.voice-stream-tile-v103[data-watch-screen]{content-visibility:auto;contain-intrinsic-size:360px 220px}
.voice-stream-video-host-v103 video{background:#000;image-rendering:auto}
.voice-room-chat-v103{backdrop-filter:blur(18px)}
.voice-room-chat-button-v103{position:relative}

/* Keep Direct Messages comfortable at 100% zoom on laptops and tablets. */
@media(min-width:761px) and (max-height:850px){
  #view-messages.active{height:calc(100dvh - 24px)!important}.messages-page-head-v10{display:none!important}.messages-shell-v10{border-radius:15px!important}
  .dm-conversation-panel-v10 .chat-room-header{min-height:58px!important;padding:9px 12px!important}.dm-conversation-panel-v10 .chat-search-wrap{padding-block:6px!important}
  .dm-conversation-panel-v10 .chat-compose-wrap{padding-bottom:8px!important}
}
@media(max-width:520px){
  .dm-conversation-panel-v10 .chat-room-header{padding:8px!important}.dm-conversation-panel-v10 .chat-header-tools .chat-tool:not(.call-tool-v9):not(.icon-only){display:none!important}
  .dm-conversation-panel-v10 .chat-search-wrap{display:none!important}.dm-conversation-panel-v10 .chat-message-list{padding:9px!important}.chat-compose-wrap{padding:7px!important}
  .voice-stream-tile-overlay-v103{opacity:1;background:linear-gradient(transparent 45%,rgba(0,0,0,.76))}.voice-stream-watch-v103{transform:translateY(12px)}
}

/* Message attachments: Portal 10.3 */
.chat-attachment-help-v103{margin:6px 2px 0;color:var(--muted);font-size:.46rem;line-height:1.45}
.chat-attach-action-v103{font-size:1rem!important;font-weight:500!important}
.chat-attachment-queue-v103{display:flex;gap:7px;overflow-x:auto;padding:8px 0 3px;scrollbar-width:thin}.chat-attachment-queue-v103[hidden]{display:none!important}
.chat-attachment-chip-v103{flex:0 0 min(260px,72vw);display:grid;grid-template-columns:34px minmax(0,1fr) 26px;align-items:center;gap:8px;padding:7px 8px;border:1px solid var(--border);border-radius:11px;background:var(--surface)}
.chat-attachment-chip-v103>span{display:grid;place-items:center;width:34px;height:34px;border-radius:9px;background:color-mix(in srgb,var(--accent) 12%,var(--panel2));color:var(--bright);font-size:.52rem;font-weight:900}.chat-attachment-chip-v103 b,.chat-attachment-chip-v103 small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-attachment-chip-v103 b{font-size:.53rem}.chat-attachment-chip-v103 small{margin-top:3px;color:var(--muted);font-size:.43rem}.chat-attachment-chip-v103 button{width:25px;height:25px;border:1px solid var(--border);border-radius:7px;background:var(--panel2);color:var(--muted)}.chat-attachment-chip-v103 button:hover{border-color:var(--danger);color:var(--danger)}
.message-attachments-v103{display:grid;gap:7px;margin-top:8px;max-width:min(680px,100%)}
.message-attachment-card-v103{display:grid;grid-template-columns:minmax(52px,auto) minmax(0,1fr) auto;align-items:center;gap:9px;min-width:0;padding:8px;border:1px solid var(--border);border-radius:12px;background:color-mix(in srgb,var(--surface) 88%,transparent);overflow:hidden}
.message-attachment-preview-v103{display:grid;place-items:center;min-width:52px;min-height:48px;max-width:260px;border-radius:9px;overflow:hidden;background:var(--panel2)}.message-file-icon-v103{display:grid;place-items:center;width:52px;height:48px;color:var(--bright);font-size:.54rem;font-weight:900;letter-spacing:.04em}
.message-attachment-image-v103{display:block;width:min(260px,38vw);max-height:190px;object-fit:cover}.message-attachment-video-v103{display:block;width:min(320px,42vw);max-height:220px;background:#000}.message-attachment-audio-v103{width:min(330px,45vw);height:38px}
.message-attachment-info-v103{min-width:0}.message-attachment-info-v103 b,.message-attachment-info-v103 small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.message-attachment-info-v103 b{font-size:.56rem}.message-attachment-info-v103 small{margin-top:4px;color:var(--muted);font-size:.43rem}
.message-attachment-actions-v103{display:flex;gap:5px}.message-attachment-actions-v103 a,.message-attachment-actions-v103 button{padding:6px 8px;border:1px solid var(--border);border-radius:7px;background:var(--panel2);color:var(--text);font-size:.44rem;font-weight:800;text-decoration:none}.message-attachment-actions-v103 a:hover{border-color:var(--accent);color:var(--bright)}
@media(max-width:720px){.chat-attachment-help-v103{display:none}.message-attachment-card-v103{grid-template-columns:48px minmax(0,1fr);align-items:start}.message-attachment-actions-v103{grid-column:1/-1}.message-attachment-image-v103,.message-attachment-video-v103,.message-attachment-audio-v103{width:min(100%,280px)}.message-attachment-preview-v103{max-width:100%}.chat-media-tools #chatAttachButtonV103{display:none}}
