/* filepath: /home/xesar/Documentos/Nextream/AvanzaCast/packages/broadcast-panel/src/features/studio/PreJoin.module.css */ :root{ --card-bg: var(--studio-bg-elevated, #ffffff); --muted: var(--studio-text-secondary, #6b7280); --accent: var(--studio-accent, #4f46e5); --badge-bg: rgba(99,102,241,0.9); /* keep template purple */ --danger: var(--studio-danger, #ef4444); --danger-700: #b91c1c; } .prejoinContainer{ max-width: 628px; margin: 0 auto; padding: 20px; } .card{ background: var(--card-bg); border-radius: 12px; padding: 0; box-shadow: none; } .header{ text-align: center; margin-bottom: 24px; } .header > div:first-child{ font-size: 28px; font-weight: 600; color: var(--studio-text-primary, #1a1a1a); margin-bottom: 8px; } .note{ font-size: 14px; color: var(--studio-text-secondary, #666666); line-height: 1.5; } /* layout: video + mic-status side panel like template */ .contentRow{ display: flex; gap: 16px; margin-bottom: 24px; align-items: flex-start; } .previewColumn{ flex: 1; } .previewCard{ border-radius: 12px; overflow: hidden; background: var(--studio-bg-tertiary, #0a0a1a); position: relative; aspect-ratio: 16/9; } .videoEl{ width: 100%; height: 100%; object-fit: cover; background: #0b0b0b; } .badge{ position: absolute; bottom: 16px; left: 16px; background: var(--badge-bg); color: #fff; padding: 8px 20px; font-size: 14px; font-weight: 500; border-radius: 20px; box-shadow: none; } .micPanel{ background-color: var(--studio-bg-secondary, #f8f9fa); border-radius: 12px; padding: 20px; min-width: 180px; display: flex; flex-direction: column; align-items: center; justify-content: center; } .mic-icon{ width: 48px; height: 48px; background-color: #e8e8e8; border-radius: 50%; display:flex; align-items:center; justify-content:center; margin-bottom:12px; } .mic-meter{ width: 32px; height: 80px; background-color: #e8e8e8; border-radius: 16px; margin-bottom: 12px; position: relative; overflow: hidden; } .mic-level{ position: absolute; bottom: 0; left: 0; right: 0; height: 20%; background: linear-gradient(to top, #22c55e, #86efac); border-radius: 16px; transition: height 0.1s ease-out; } .micStatus{ color: #22c55e; font-weight: 500; font-size: 14px; text-align: center; margin-bottom: 4px; } .mic-device{ font-size: 11px; color: var(--studio-text-disabled, #999999); text-align: center; } /* Controls wrapper (segmented) - copiar exactamente del template */ .controlsRow{ display: inline-flex; justify-content: center; gap: 8px; padding: 12px; background-color: var(--card-bg); border: 1px solid var(--studio-border, #e5e5e5); border-radius: 12px; margin-bottom: 24px; margin-left: auto; margin-right: auto; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.06); } .controlButtonLocal{ display: flex; flex-direction: column; align-items: center; gap: 8px; background: transparent; border: none; cursor: pointer; color: var(--muted); font-size: 13px; transition: all 0.2s; padding: 12px 20px; border-radius: 8px; position: relative; } /* hover and active states like template */ .controlButtonLocal:hover{ color: var(--studio-text-primary, #1a1a1a); background-color: rgba(254,226,226,1); /* template fee2e2 */ } /* disabled / error */ .controlsRow > button[data-active="false"], .controlButtonLocal.disabled{ color: var(--danger, #dc2626); background-color: rgba(254,202,202,1); } .controlButtonLocal.disabled:hover, .controlsRow > button[data-active="false"]:hover{ color: var(--danger-700, #b91c1c); background-color: rgba(252,165,165,1); } .controlButtonLocal > span:first-child{ width:24px; height:24px; display:inline-flex; align-items:center; justify-content:center; } .controlButtonLocal > span:first-child svg{ width:24px; height:24px; } .controlButtonLocal .controlButtonLabel{ font-size:13px; margin:0; } /* hints (tooltip) */ .control-hint{ position: absolute; bottom: 100%; left: 50%; transform: translateX(-50%); background-color: var(--studio-text-primary, #1a1a1a); color: white; padding:6px 12px; border-radius:6px; font-size:12px; white-space:nowrap; opacity:0; pointer-events:none; transition: opacity 0.2s; margin-bottom:8px; } .controlButtonLocal:hover .control-hint{ opacity:1 } /* Form elements */ .roomTitle{ margin-top: 8px; margin-bottom: 8px; font-weight:500; color: var(--studio-text-primary, #1a1a1a); } .input{ width:100%; padding:12px 16px; border-radius:8px; border:1px solid var(--studio-border, #d1d5db); font-size:14px; margin-bottom:16px; } .input:focus{ outline:none; box-shadow: 0 0 0 3px rgba(59,130,246,0.1); border-color:var(--studio-accent, #3b82f6) } .actions{ display:flex; gap:12px; margin-top:8px } .cancelBtn{ background:transparent; border: none; padding:10px 14px; border-radius:8px } .primaryBtn{ background:var(--studio-accent, #2563eb); color:#fff; padding:12px 18px; border-radius:8px; border:none } .shortcutsLegend{ text-align:center; color: var(--studio-text-muted, #9ca3af); margin-top: 8px } .kbd{ background-color: #374151; padding: 2px 6px; border-radius:3px; font-family: monospace; font-size:11px; margin: 0 2px } @media (max-width: 768px){ .contentRow{ flex-direction: column; } .controlsRow{ display:flex; flex-direction: column; gap:8px; padding:0; background:transparent; box-shadow:none; border:none } .controlButtonLocal{ width:100%; padding:12px 16px } .previewCard{ aspect-ratio: 16/9; } .micPanel{ min-width: auto; width: 100%; } }