body { font-family: Arial, sans-serif; background: #0f172a; color: #e2e8f0; margin: 0; padding: 0; } .landing-body { min-height: 100vh; background: radial-gradient(circle at 10% 20%, rgba(124, 58, 237, 0.18), transparent 30%), radial-gradient(circle at 80% 0%, rgba(59, 130, 246, 0.16), transparent 25%), #0f172a; } .landing { max-width: 1100px; margin: 0 auto; padding: 40px 20px 64px; } .landing-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 32px; } .brand { display: flex; align-items: center; gap: 12px; } .brand-mark { width: 40px; height: 40px; border-radius: 12px; background: linear-gradient(135deg, #7c3aed, #4f46e5); display: grid; place-items: center; font-weight: 700; letter-spacing: 0.5px; } .brand-title { font-weight: 700; font-size: 18px; } .brand-subtitle { color: #94a3b8; font-size: 13px; } .hero { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 28px; align-items: center; background: rgba(15, 23, 42, 0.8); border: 1px solid #1f2937; padding: 28px; border-radius: 16px; box-shadow: 0 25px 60px rgba(0, 0, 0, 0.45); } .hero-text h1 { font-size: 32px; line-height: 1.2; margin: 8px 0 12px; } .lead { color: #cbd5e1; line-height: 1.6; } .eyebrow { text-transform: uppercase; letter-spacing: 1px; color: #a5b4fc; font-size: 12px; margin: 0; } .eyebrow.subtle { color: #cbd5e1; } .cta-row { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin: 16px 0 10px; } .button, button { background: #7c3aed; color: white; padding: 10px 16px; border: none; border-radius: 8px; cursor: pointer; text-decoration: none; display: inline-flex; align-items: center; justify-content: center; gap: 8px; font-weight: 600; box-shadow: 0 10px 30px rgba(124, 58, 237, 0.25); } .button.block { width: 100%; } .button.ghost { background: transparent; border: 1px solid #2d3a57; box-shadow: none; } .secondary { background: #475569; } .stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 12px; margin-top: 18px; } .stat { padding: 12px; background: #0b1220; border-radius: 10px; border: 1px solid #1f2937; } .stat-value { font-weight: 700; } .stat-label { color: #94a3b8; font-size: 13px; } .hero-panel { background: #0b1220; border: 1px solid #1f2937; border-radius: 14px; padding: 18px; box-shadow: inset 0 1px 0 rgba(255,255,255,0.02); } .badge { display: inline-flex; align-items: center; gap: 6px; padding: 4px 8px; border-radius: 999px; background: rgba(124, 58, 237, 0.1); color: #c4b5fd; font-weight: 600; font-size: 12px; border: 1px solid rgba(124, 58, 237, 0.2); } .badge.subtle { background: rgba(148, 163, 184, 0.1); color: #cbd5e1; border-color: rgba(148, 163, 184, 0.2); } .badge-row { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; margin-top: 6px; } .badge-row.stacked { flex-direction: column; align-items: flex-start; gap: 6px; } .feature-list { list-style: none; padding: 0; margin: 14px 0 18px; display: flex; flex-direction: column; gap: 12px; } .feature-title { font-weight: 700; } .feature-desc { color: #94a3b8; margin-top: 4px; } .info-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 16px; margin: 28px 0; } .info-card { background: #0b1220; border: 1px solid #1f2937; padding: 16px; border-radius: 12px; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.25); } .info-card h4 { margin: 10px 0 6px; } .info-card p { color: #cbd5e1; line-height: 1.5; } .landing-footer { display: flex; align-items: center; justify-content: space-between; background: #0b1220; padding: 16px; border: 1px solid #1f2937; border-radius: 12px; } .admin-layout { min-height: 100vh; display: flex; flex-direction: column; } .dashboard-body { min-height: 100vh; background: radial-gradient(circle at 0% 30%, rgba(59, 130, 246, 0.14), transparent 30%), radial-gradient(circle at 90% 10%, rgba(124, 58, 237, 0.12), transparent 28%), #0f172a; padding: 36px 18px 64px; } .dashboard-shell { max-width: 1100px; margin: 0 auto; display: flex; flex-direction: column; gap: 20px; } .dashboard-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; padding: 22px; background: rgba(15, 23, 42, 0.8); border: 1px solid #1f2937; border-radius: 16px; box-shadow: 0 18px 50px rgba(0,0,0,0.35); } .dashboard-header h1 { margin: 6px 0 10px; } .header-actions { display: flex; flex-direction: column; gap: 10px; align-items: flex-end; } .chip-row { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 10px; } .chip { display: inline-flex; align-items: center; gap: 6px; padding: 6px 10px; border-radius: 999px; background: rgba(124, 58, 237, 0.15); color: #c4b5fd; border: 1px solid rgba(124, 58, 237, 0.25); font-weight: 600; } .chip.subtle { background: rgba(148, 163, 184, 0.12); color: #e2e8f0; border-color: rgba(148, 163, 184, 0.3); } .card-grid { display: grid; gap: 16px; } .card-grid.two-col { grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); } .card { background: #0b1220; border: 1px solid #1f2937; border-radius: 14px; padding: 18px; box-shadow: 0 14px 40px rgba(0,0,0,0.35); } .card-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 12px; } .pill { padding: 6px 10px; border-radius: 999px; background: rgba(59, 130, 246, 0.15); color: #bfdbfe; border: 1px solid rgba(59, 130, 246, 0.25); font-weight: 600; font-size: 13px; } .inline-form { display: flex; gap: 10px; flex-wrap: wrap; } .inline-form input { flex: 1; min-width: 220px; padding: 10px; border-radius: 10px; border: 1px solid #1f2937; background: #111827; color: #e2e8f0; } .container { max-width: 960px; margin: 40px auto; background: #111827; padding: 24px; border-radius: 12px; box-shadow: 0 5px 16px rgba(0,0,0,0.3); } .controls { display: flex; gap: 24px; padding: 16px; background: #0b1220; } .controls ul { list-style: none; padding: 0; margin-top: 12px; } .controls li { margin: 6px 0; } .overlay { position: relative; flex: 1; min-height: 420px; height: calc(100vh - 260px); background: black; overflow: hidden; } .overlay iframe { position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: none; filter: brightness(0.35) saturate(0.7); } .overlay canvas { position: absolute; top: 0; left: 0; pointer-events: auto; z-index: 2; } .broadcast-body canvas { position: absolute; top: 0; left: 0; width: 100%; height: 100%; pointer-events: none; } .broadcast-body { margin: 0; overflow: hidden; background: transparent; } .panel { margin-top: 24px; padding: 16px; background: #0b1220; border-radius: 10px; border: 1px solid #1f2937; } .panel.hidden { display: none; } .asset-settings { background: radial-gradient(circle at 15% 20%, rgba(124, 58, 237, 0.08), transparent 40%), radial-gradient(circle at 85% 0%, rgba(59, 130, 246, 0.06), transparent 45%), #0b1220; border: 1px solid #312e81; box-shadow: 0 18px 45px rgba(0, 0, 0, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.03); } .panel-header { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; } .panel-header h4 { margin: 0; } .panel-summary { background: rgba(124, 58, 237, 0.06); border: 1px solid rgba(124, 58, 237, 0.22); border-radius: 12px; padding: 12px 14px; max-width: 320px; box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05); } .panel-summary p { margin: 0; } .panel ul { list-style: none; padding: 0; margin: 8px 0 0 0; } .panel li { margin: 6px 0; } .title-row { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; } .meta-text { margin: 6px 0 0; } .panel-section { margin-top: 16px; padding: 14px; border-radius: 12px; background: rgba(255, 255, 255, 0.02); border: 1px solid rgba(148, 163, 184, 0.15); } .panel-section.two-col { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 14px; } .section-header { display: flex; flex-direction: column; gap: 4px; margin-bottom: 10px; } .section-header h5 { margin: 0; } .asset-list { display: flex; flex-direction: column; gap: 8px; margin-top: 12px; } .asset-item { display: flex; justify-content: space-between; align-items: center; padding: 10px 12px; border-radius: 8px; background: #111827; border: 1px solid #1f2937; cursor: pointer; gap: 12px; } .asset-item.selected { border-color: #7c3aed; box-shadow: 0 0 0 1px rgba(124, 58, 237, 0.6); } .asset-item .meta { display: flex; flex-direction: column; gap: 4px; } .asset-item small { color: #94a3b8; } .asset-item .actions { display: flex; gap: 8px; } .asset-item.hidden { opacity: 0.6; } .asset-preview { width: 64px; height: 64px; object-fit: contain; background: #0b1220; border: 1px solid #1f2937; border-radius: 8px; flex-shrink: 0; } .control-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 12px; margin-top: 12px; } .control-grid.condensed { gap: 10px; margin-top: 8px; } .control-grid label { display: flex; flex-direction: column; gap: 6px; color: #cbd5e1; } .control-grid input[type="number"], .control-grid input[type="range"] { padding: 8px; border-radius: 6px; border: 1px solid #1f2937; background: #0f172a; color: #e2e8f0; } .control-actions { display: flex; gap: 8px; margin-top: 12px; flex-wrap: wrap; } .control-actions.filled { background: rgba(255, 255, 255, 0.02); border: 1px solid rgba(124, 58, 237, 0.22); padding: 12px; border-radius: 12px; } .checkbox-inline { display: flex; align-items: center; gap: 8px; padding-top: 6px; } .muted { color: #94a3b8; font-size: 0.9em; } .range-value { color: #a5b4fc; font-size: 12px; margin-top: -4px; } .landing-footer .muted { font-size: 12px; } .stacked-list { list-style: none; padding: 0; margin: 12px 0 0; display: flex; flex-direction: column; gap: 10px; } .stacked-list-item { display: flex; justify-content: space-between; align-items: center; padding: 12px 14px; border-radius: 12px; background: #111827; border: 1px solid #1f2937; } .stacked-list-item .list-title { margin: 0; font-weight: 700; } .identity-row { display: flex; align-items: center; gap: 12px; } .identity-text { display: flex; flex-direction: column; gap: 2px; } .avatar { width: 40px; height: 40px; border-radius: 50%; object-fit: cover; background: linear-gradient(135deg, #7c3aed, #4f46e5); display: grid; place-items: center; font-weight: 700; color: #e0e7ff; text-transform: uppercase; } .avatar-fallback { border: 1px solid rgba(255, 255, 255, 0.08); }